jQuery .preventDefault ();
J'ai un 2 scripts jQuery - avant de me ajoutée .preventDefault, et une copie de la même script après j'ai ajouté le .preventDefault. jQuery fonctionne dans la première, mais pas après l'ajout .preventDefault()
Script Initial qui fonctionne
$(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 qui ne fonctionne pas...
$(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
Le seul changement que j'ai fait est la première instruction if devient un if/else qui appelle .preventDefault(). Le premier script fonctionne très bien, mais le second script échoue. Pourquoi? Je vais appeler la .méthode preventDefault() si la valeur de la organizationalElement est idk sur un enregistrement existant.
@André: À préciser sur votre modifier... dois-je revoir mon script:
...
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 je l'ai noté qu'il fonctionne correctement si je change $(this).preventDefault(); à l'e.preventDefault();
Vous êtes peut-être en essayant de montrer comment l'écrire si je veux fixer la méthode de l' $(this) objet comme je l'avais écrit à l'origine?
source d'informationauteur jg100309
Vous devez vous connecter pour publier un commentaire.
Vous voulez l'appeler
preventDefault
sur l'objet de l'événement, pasthis
Juste pour être complet, notons que
preventDefault
empêche la action par défaut de cet élément de navigation de la page à la valeur de l'attribut href pour un point d'ancrage, par exemple (je ne suis pas sûr de ce que l'action par défaut est pour une sélection de focusout, ou si il n'y a même).preventDefault
ne pas éviter que la garniture bouillonne.S'il vous arrive de soins sur le bouillonnement—et je ne dis pas que vous devez obligatoirement devrait—retour faux à partir d'un jQuery gestionnaire d'événements à la fois de prévenir l'action par défaut, et aussi éviter que la garniture bouillonne.
La
preventDefault()
fonction est associée à l'événement. Ce que vous devriez être demandé est de:modifier à préciser en fonction de votre commentaire, vous devez ajouter
e
comme une variable dans l'appel de la fonction:Vous pouvez en lire plus sur le jQuery preventDefault page.
La
preventDefault
méthode doit être appliquée à l'objet de l'événement, et non pas à l'objet DOM comme vous le faites.De votre code devrait être:
Laissez-moi savoir si ça peut aider!