Huy Guys,
J'essaie d'utiliser le plugin de validation jQuery et de spécifier qu'un champ n'est requis que lorsque 3 autres champs sont vides (non remplis).
le truc, c'est que la règle fonctionne mais elle continue de nécessiter le champ même lorsque je tape de la valeur dessus.
Merci.
Voici mon code:
$("#ProspectDtlFrm").validate({
rules: {
prsptEmail: {
required: function(element) { return ( $("#prsptHomePhone").val() == '' && $("#prsptBusinessPhone").val() == '' && $("#prsptMobilePhone").val() =='') }
}
},
messages: {
prsptEmail: "Please enter your first name"
}
});
Vous pouvez utiliser depends
:
$('#ProspectDtlFrm').validate({
rules: {
prsptEmail: {
required: {
depends: function(element) {
return ($('#prsptHomePhone').val() == '' &&
$('#prsptBusinessPhone').val() == '' &&
$('#prsptMobilePhone').val() == '');
}
}
}
},
messages: {
prsptEmail: 'Please enter your first name'
}
});
La clause depends
est toujours prise en charge. Il s'agit de la version 1.11.0pre:
normalizeRules: function(rules, element) {
// handle dependency check
$.each(rules, function(prop, val) {
// ignore rule when param is explicitly false, eg. required:false
if (val === false) {
delete rules[prop];
return;
}
if (val.param || val.depends) {
var keepRule = true;
switch (typeof val.depends) {
case "string":
keepRule = !!$(val.depends, element.form).length;
break;
case "function":
keepRule = val.depends.call(element, element);
break;
}
if (keepRule) {
rules[prop] = val.param !== undefined ? val.param : true;
} else {
delete rules[prop];
}
}
});
Comme vous pouvez le voir, vous pouvez choisir entre "chaîne" et "fonction". Vous pouvez donc utiliser:
rules: {
input_name_here: {
required: {
depends: function(element) {
return $("#thickBoxId:checked").length;
//or whatever you need to check
}
}
}
}
Ou
rules:{
input_name_here:{
required: '#tickBoxId:checked'
}
}
Si vous avez seulement besoin de tester l'existence de quelque chose de vérifié.
'depend' semble ne plus être pris en charge et leurs documents ne sont pas à jour.
Donc, dans le scénario où si une case à cocher "oui" est cochée, validez un autre champ:
rules:{
'name value of area you want to validate':{
required: '#tickBoxId:checked'
}
}
la façon est depends
ça marche.
rules: {
prsptEmail: {
required: {
depends: function(element){
if ($('#id-user').val() == '') {
return true;
} else {
return false;
}
}
}
},
},
messages: {
prsptEmail : {
required : "please signIn!",
}
},