Tôi có 2 tập lệnh jQuery - một tệp trước khi tôi thêm .preventDefault và một bản sao của cùng một tập lệnh sau khi tôi thêm tệp .preventDefault. jQuery làm việc trong ban đầu, nhưng không phải sau khi tôi thêm .preventDefault()jQuery .preventDefault();
kịch bản ban đầu mà làm việc
$(window).load(function(){
$(document).ready(function(){
$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
if ($(this).text() == "Yes") { //test value returned from non-input field
clearID();
$("tr.anon").hide();
} else {
$("tr.anon").show();
}
});
if ($("select[title='action']").val() == "") {
$("tr.actDet").hide();
}
$("select[title='organizationalElement']").focusout(function() {
if ($(this).val() === "I don\'t know") {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
$("select[title='action']").change(function(){
$(".actDet").toggle($(this).val()!= "");
}); // close action.change
});//close select.focusout
}); // close doc.ready
}); // close window.load
Script đó không làm việc ...
$(window).load(function(){
$(document).ready(function(){
$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
if ($(this).text() == "Yes") { //test value returned from non-input field
clearID();
$("tr.anon").hide();
} else {
$("tr.anon").show();
}
});
if ($("select[title='action']").val() == "") {
$("tr.actDet").hide();
}
$("select[title='organizationalElement']").focusout(function() {
if ($(this).val() !== "I don\'t know") {
$(this).preventDefault();
} else {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
$("select[title='action']").change(function(){
$(".actDet").toggle($(this).val()!= "");
}); // close action.change
});//close select.focusout-- close edit record stuff
}); // close doc.ready
}); // close window.load
Sự thay đổi duy nhất tôi làm là câu lệnh if ban đầu sẽ trở thành if/else gọi là .preventDefault(). Tập lệnh đầu tiên hoạt động rất tốt, nhưng tập lệnh thứ hai không thành công. Tại sao? Tôi đang gọi phương thức .preventDefault() nếu giá trị của organizationElement là idk trên một bản ghi hiện có.
@ Andrew: Để làm rõ về chỉnh sửa của bạn ... Tôi có nên sửa lại kịch bản của tôi để: ...
if ($(this).val() !== "I don\'t know") {
$(this).click(function(e) { e.preventDefault(); });
} else {
alert("If no organizational element is selected, additional time may be required to route this request");
} // close if
... b/c tôi ghi nhận taht nó sẽ làm việc một cách chính xác nếu tôi thay đổi $ (this) .preventDefault(); tới e.preventDefault();
Có phải bạn đang cố gắng thể hiện cách viết nó nếu tôi muốn đính kèm phương thức vào đối tượng $ (this) này như tôi đã viết ban đầu?
Cảm ơn Adam.Tôi biết rằng ngăn chặnDefault không ngăn chặn sự kiện từ sủi bọt, tuy nhiên tôi không chắc chắn rằng tôi không muốn bong bóng. Có lẽ đó là những gì đã ngăn chặn toàn bộ kịch bản jQuery hoạt động? – jg100309
@ jg100309 - không, vấn đề ban đầu của bạn là bạn đang gọi preventDefault về điều này, thay vì đối tượng sự kiện. Chuyển đối tượng sự kiện tới trình xử lý của bạn và gọi chặnDefault on * it *, như trong câu trả lời của tôi –
* Side Note: Bạn không phải thoát ký tự ''' nếu nó nằm giữa hai '' 's. * – SeinopSys