J'utilise ce fancy sliding box et j'ai un problème avec la validation.Il a la validation par défaut pour vérifier où un champ est vide ou non mais je veux ajouter plus de validation comme deux champs spécifiques sont égaux ou non ou la longueur d'un champ spécifique est dans la longueur désirée ou non. J'ai édité le code mais face à un problème qui est quand un champ de navigation précédent a une erreur il ajoute également la classe d'erreur pour la navigation suivante bien qu'il a été rempli correctement.
Voici mon code (à noter que je ne sais pas bien jquery):Forme glissante fantaisie avec plus de validation
function validateStep(step) {
if(step == fieldsetCount) return;
var error = 1;
var hasError = false;
$('#formElem').children(':nthchild('+parseInt(step)+')')
.find(':input:not(button)')
.each(function() {
var $this = $(this);
var valueLength = jQuery.trim($this.val()).length;
//i don't know how to generate a specific field value using this keyword
var pas=$('#myPassword').val().length;
var pas1=$('#myPassword').val();
var pas2=$('#VerifyPassword').val();
var pin1=$('#mPin').val();
var pin2=$('#vVPin').val();
var pas_ok=1;
if(pas1 != pas2 || pin1 ! =pin2 || pas < 5) {
pas_ok=0;
}
if(valueLength == '' || pas_ok==0) {
hasError = true;
$this.css('background-color','#FFEDEF');
} else {
$this.css('background-color','#FFFFFF');
}
});
var $link = $('#navigation li:nth-child(' + parseInt(step) + ') a');
$link.parent().find('.error,.checked').remove();
var valclass = 'checked';
if(hasError) {
error = -1;
valclass = 'error';
}
$('<span class="'+valclass+'"></span>').insertAfter($link);
return error;
}
Voici ma forme:
<div id="steps">
<form id="formElem" name="formElem" action="" method="post" >
<fieldset class="step">
<legend>Account</legend>
<p>
<label for="password">Password</label>
<input type="password" name="myPassword" id="myPassword" value="<?=$myPassword;?>" AUTOCOMPLETE=OFF />
</p>
<p>
<label for="password"> Verify Password</label>
<input type="password" name="VerifyPassword" id="VerifyPassword" value="<?=$VerifyPassword;?>" />
</p>
<p>
<label for="password"> Your Personal Pin </label>
<input type="pin" name="mPin" id="mPin" value="<?=$mPin;?>" />
</p>
<p>
<label for="password"> Verify Personal Pin </label>
<input type="pin" name="vVPin" id="vVPin" value="<?=$vVPin;?>" />
</p>
</fieldset>
</form>
</div>
erreur!. changer en: 'parseInt (étape, 10) pas_ok === 0 pin1! = pin2' – AvrilAlejandro
pourquoi parseInt (étape, 10)? – query
** parseInt (chaîne, base) **. radix: Un nombre (de 2 à 36) qui représente le système numérique à utiliser. ** Note: ** la valeur par défaut est la base décimale (10). ** Note: ** Seul le premier nombre de la chaîne est retourné! – AvrilAlejandro