2010-04-23 5 views
6

J'essaie de me familiariser avec les méthodes personnalisées de validation jQuery et semble être un peu confus. pourquoi this.optional (élément) dans ma méthode personnalisée renvoie toujours false?jQuery validation this.optional (element) toujours false

est ici un exemple de mon code:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $.validator.addMethod('customemethod', function(val, el){ 
      return this.optional(el) || false; 
     }, 'custom method says its INVALID !'); 
     $('#myform').validate({ignore: '*[ignore]'}); 
     $('#validate').click(function(){ 
      $('#result').text($('#myform').validate().form()); 
      return false; 
     }); 
    }); 
</script> 
<form id="myform"> 
    <div><input type="text" id="customfield" name="customfield" /></div> 
    <script type="text/javascript"> 
     $(document).ready(function(){$('#customfield').rules('add', { required: true, customemethod: true }) }); 
    </script> 
    <div><input type="text" id="customfield2" name="customfield2" /></div> 
    <script type="text/javascript"> 
     $(document).ready(function(){$('#customfield2').rules('add', { required: false, customemethod: true }) }); 
    </script> 

    <div id="result"></div> 
    <input id="validate" type="submit" /> 
</form> 

en cas si l'élément est pas nécessaire et sa valeur n'est pas vide - méthode de validation est appelé et je dois revenir vrai dans ce cas. Mais this.optional (el) est toujours faux :(

Comment puis-je résoudre? Comment puis-je vérifier si l'élément est nécessaire ou non à l'intérieur méthode personnalisée? Merci.

Répondre

7

optional est faux si la valeur n'est pas vide, vous pouvez donc effectuer une validation sur le terrain, mais uniquement si elle n'est pas vide.Par exemple, si l'adresse de messagerie est facultative, vous devez valider le format, mais seulement si la valeur est fournie optional renvoie true si La valeur n'est pas fournie, donc le reste de l'évaluation n'est pas effectué.Ceci est le but de cette méthode.Si vous avez besoin de valeur pour ne pas être vide, il doit être nécessaire.Si vous en avez besoin soit vide ou non, vous ne le faites pas besoin de validation du tout

Questions connexes