Je veux retourner false et retourner de function si je trouve la première zone de texte vide
function validate(){
$('input[type=text]').each(function(){
if($(this).val() == "")
return false;
});
}
et le code ci-dessus ne fonctionne pas pour moi: ( quelqu'un peut-il aider?
Vous sautez, mais dans la boucle inner , je voudrais plutôt utiliser un sélecteur pour votre contrôle spécifique "sans valeur", comme ceci:
function validate(){
if($('input[type=text][value=""]').length) return false;
}
Ou définissez le résultat au fur et à mesure que vous entrez dans la boucle et renvoyez that result de la boucle externe:
function validate() {
var valid = true;
$('input[type=text]').each(function(){
if($(this).val() == "") //or a more complex check here
return valid = false;
});
return valid;
}
Vous pouvez le faire comme ça:
function validate(){
var rv = true;
$('input[type=text]').each(function(){
if($(this).val() == "") {
rv = false; // Set flag
return false; // Stop iterating
}
});
return rv;
}
Cela suppose que vous souhaitiez renvoyer true
si vous ne le trouvez pas.
Vous constaterez peut-être qu'il s'agit d'une de ces mises en garde pour lesquelles vous ne souhaitez pas utiliser each
du tout:
function validate(){
var inputs = $('input[type=text]');
var index;
while (index = inputs.length - 1; index >= 0; --index) {
if (inputs[index].value == "") { // Or $(inputs[index]).val() == "" if you prefer
return false;
}
}
// (Presumably return something here, though you weren't in your example)
}
Je veux ajouter quelque chose aux réponses existantes pour effacer le comportement de $(selector).each
et pourquoi il ne respecte pas renvoyer false dans le code de OP.
return
mot-clé à l'intérieur de $(selector).each
est utilisé pour interrompre ou continuer la boucle. Si vous utilisez return false
, cela équivaut à une instruction break
dans une boucle for/while
. Renvoyer non-false est identique à une instruction continue
dans une boucle for
; il passera immédiatement à la prochaine itération. La source
Comme vous renvoyez false, la boucle se rompt et la fonction renvoie undefined
dans votre cas. Vous avez le choix d’utiliser une variable var extérieure à $.each
ou de ne pas l’utiliser complètement comme @TJCrowder l’a écrit.