web-dev-qa-db-fra.com

Champ jquery validate depend

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"
 }
}); 
19
cesar

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'
    } 
});
37
Darin Dimitrov

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é.

8
vicman4

'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'
    }
}
5
joe

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!",
        }
    },
1
enlacee