2 つの jQuery スクリプトがあります。1 つは .preventDefault を追加する前、もう 1 つは .preventDefault を追加した後の同じスクリプトのコピーです。jQuery は最初は機能しますが、.preventDefault() を追加した後は機能しません
動作する初期スクリプト
$(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
動かないスクリプト...
$(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
私が行った唯一の変更は、最初の if ステートメントが .preventDefault() を呼び出す if/else になることです。最初のスクリプトは問題なく動作しますが、2 番目のスクリプトは失敗します。なんで?organizationElement の値が既存のレコードの idk である場合、.preventDefault() メソッドを呼び出しています。
@Andrew: あなたの編集を明確にするために...スクリプトを次のように修正する必要があります: ...
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 $(this).preventDefault(); を変更すると正しく動作することに注意しました。e.preventDefault(); に
私が最初に書いたように、メソッドを $(this) オブジェクトにアタッチしたい場合、おそらくそれを書く方法を示そうとしていますか?