2010-04-23 11 views
6

Ich versuche, mit jQuery Validierung benutzerdefinierte Methoden vertraut zu machen und scheint ein wenig verwirrt zu werden. Warum gibt this.optional (element) in meiner benutzerdefinierten Methode immer false zurück?jQuery Validierung this.optional (Element) immer falsch

hier ist ein Beispiel für meinen 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> 

im Fall, wenn das Element nicht erforderlich ist, und es ist Wert nicht leer ist - Validierungsmethode aufgerufen wird, und ich muß in diesem Fall wahr zurückzukehren. Aber this.optional (el) ist immer falsch :(

Wie kann ich sie lösen? Wie kann ich überprüfen, ob Element erforderlich ist oder nicht innerhalb benutzerdefinierte Methode? Dank.

Antwort

7

optional ist falsch, wenn der Wert ist nicht leer, so dass Sie eine Validierung für das Feld durchführen können, aber nur, wenn es nicht leer ist.Wenn beispielsweise die E-Mail-Adresse optional ist, müssen Sie das Format validieren, aber nur wenn Wert angegeben wird. optional liefert true if value wird nicht zur Verfügung gestellt, so dass der Rest der Auswertung nicht durchgeführt wird.Dies ist der Zweck dieser Methode.Wenn Sie Wert brauchen, um nicht leer zu sein, muss es erforderlich sein.Wenn Sie es entweder leer oder nicht brauchen, tun Sie es nicht muss überhaupt validiert werden

Verwandte Themen