J'ai un formulaire simple pour lequel je valide le côté client pour . Pour valider, aucun des champs ne doit être laissé vide .
function validateForm() {
$('.form-field').each(function() {
if ( $(this).val() === '' ) {
return false
}
else {
return true;
}
});
}
Pour une raison quelconque, ma fonction renvoie toujours false, même si tous les champs sont remplis.
Vous ne pouvez pas renvoyer false à partir de la fonction anonyme. De plus, si cela fonctionnait, vous renverriez false si votre premier champ était vide, true sinon, et ignoriez complètement le reste de vos champs. Il peut y avoir une solution plus élégante mais vous pouvez faire quelque chose comme ceci:
function validateForm() {
var isValid = true;
$('.form-field').each(function() {
if ( $(this).val() === '' )
isValid = false;
});
return isValid;
}
Une autre recommandation: cela nécessite que vous décoriez tous vos champs de formulaire avec cette classe formfield. Vous pouvez être intéressé par le filtrage à l'aide d'un sélecteur différent, par exemple. $('form.validated-form input[type="text"]')
EDIT Ah, je me suis fait battre, mais mon explication est toujours valable et, espérons-le, utile.
Vous reveniez de la fonction interne et non de la méthode validate
Essayer
function validateForm() {
var valid = true;
$('.form-field').each(function () {
if ($(this).val() === '') {
valid = false;
return false;
}
});
return valid
}
function validateForm() {
var invalid= 0;
$('.form-field').each(function () {
if ($(this).val() == '') {
invalid++;
}
});
if(invalid>0)
return false;
else
return true;
}
Voici une approche similaire:
function validateForm() {
var valid = true;
$('.form-field').each(function() {
valid &= !!$(this).val();
});
return valid;
}
!!
convertit simplement la valeur d'entrée en bool