Tengo 2 scripts de jQuery, uno antes de agregar .preventDefault y una copia del mismo script después de agregar el .preventDefault. jQuery trabaja en la inicial, pero no después agrego .preventDefault()jQuery .preventDefault();
guión inicial que funciona
$(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 que no funciona ...
$(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
El único cambio que hizo es la declaración if inicial se convierte en if/else que llama a .preventDefault(). El primer script funciona bien, pero el segundo script falla. ¿Por qué? Estoy llamando al método .preventDefault() si el valor de organizationalElement es idk en un registro existente.
@ Andrew: Para aclarar en su edición ... ¿Debo revisar mi guión a: ...
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 Noté taht que funcionará correctamente si cambio $ (this) .preventDefault(); a e.preventDefault();
¿Está tratando de mostrar cómo escribirlo si deseo adjuntar el método al objeto $ (this) tal como lo había escrito originalmente?
Gracias Adam.Soy consciente de que preventionDefault no impide que el evento burbujee, sin embargo, no estoy seguro de que no desee el burbujeo. ¿Es eso quizás lo que detuvo todo el script de jQuery? – jg100309
@ jg100309 - no, su problema original era que llamaba a preventDefault en esto, en lugar del objeto de evento. Pase el objeto del evento a su controlador, y invoque preventDefault en * it *, como en mi respuesta –
* Nota al margen: No tiene que escapar del carácter ''' si está entre dos '" 's. * – SeinopSys