Nếu bạn bắt nhấp kiện từ nút như thế này:
$('#buttonId').off('click').click(function(clickEvent){
//enter code here
});
bạn thực sự có thể ngăn chặn sự đóng cửa của phương thức của bạn. Đối với điều này, tùy thuộc vào tình hình của bạn, bạn sẽ tìm thấy hai chức năng hữu ích:
clickEvent.preventDefault();
clickEvent.stopPropagation();
Nếu tôi hiểu trang web này (đó là bằng tiếng Đức) http://www.mediaevent.de/javascript/event-handler-default-verhindern.html một cách chính xác, preventDefault() dừng hành động mặc định ngay lập tức (như theo một liên kết). Tuy nhiên, bản thân sự kiện này vẫn sẽ đi qua DOM và có thể được "nghe" bởi những người nghe sự kiện khác nhau, một trong số đó là người nghe sự kiện che giấu phương thức. Đối với điều này, chức năng thứ hai là cần thiết, nó sẽ dừng sự kiện đi qua DOM. Vì vậy, nó không thể được nghe bởi người nghe ẩn và cửa sổ sẽ không được đóng lại (ẩn). Vì vậy, tôi đề nghị để thực hiện các chức năng như vậy:
$('#buttonId').off('click').click(function(clickEvent){
//enter code here
var myDataIsValid = true;
// check if Data is valid => myDataIsValid = true or false
if(myDataIsValid){
//do Stuff
}else{
clickEvent.preventDefault();
clickEvent.stopPropagation();
//do other Stuff
}
});
Trong mã của tôi, tôi chỉ cần sử dụng stopPropagation(), như hành động mặc định của tôi đang bị truy nã, vì vậy bạn có thể sử dụng hai chức năng một cách độc lập.
lưu ý: Giải pháp này chỉ được kiểm tra bằng trình duyệt Firefox