2016-03-04 149 views
1

我嘗試使用自定義的jQuery的驗證方法,像這樣:自定義jQuery的驗證規則無法正常工作

jQuery.validator.addMethod("selectnic", function(value, element){ 
    if (/^[0-9]{9}[vVxX]$/.test(value)) { 
     return true; // FAIL validation when REGEX matches 
    } else { 
     return false; // PASS validation otherwise 
    }; 
}, "wrong nic number"); 

這是規則:

contactpersonen_functie: { 
    selectnic: true, 
    required: true 
}, 

的HTML是這樣的:

<div class="contact-input-field"> 
    <input type="text" class="input-text span2" id="contactpersonen_functie" name="contactpersonen_functie"></input> 
</div> 

所以required的作品,但selectnic不起作用,誰能告訴我爲什麼這是?

謝謝

我有現在這樣的:

jQuery.validator.addMethod("selectnic", function(value, element){ 
    return !/^[0-9]{9}[vVxX]$/.test(value) 
}, "wrong nic number"); 

enter image description here

<div class="contact-label span2"> 
       <label for="contactpersonen-functie">Functie</label> 
       <div class="contact-input-field"> 
       <input type="text" class="input-text span2 contactpersonen_functie" id="contactpersonen_functie" name="contactpersonen_functie"></input> 
       </div> 
      </div> 

這是總的腳本:

<![CDATA[ 
          $(document).ready(function() 
          { 

           jQuery.validator.addMethod("selectnic", function(value, element){ 
    return !/^[0-9]{9}[vVxX]$/.test(value) 
}, "wrong nic number"); 


           // Form validation 
           $(".klantregistratie form").validate({ 
            rules: { 
             verploegen_form_klantregistratie_Bedrijfsnaam: "required", 
             verploegen_form_klantregistratie_Postcode:{ 
             required:true, 
             maxlength:6 
             }, 

             verploegen_form_klantregistratie_Plaats: "required", 
             contactpersonen_voornaam: "required", 
             contactpersonen_achternaam: "required", 
             contactpersonen_functie:{required:true, maxlength:30}, 

             verploegen_form_klantregistratie_Emailadres_digitale_factuur:{          
             email:true 
             }, 
             verploegen_form_klantregistratie_Telefoon_vast:{ 
             required:true, 
             minlength:10, 
             maxlength:10, 
             digits:true 
}, 

             verploegen_form_klantregistratie_Emailadres: { 
              required: true, 
              email: true 
             }, 


             contactpersonen_telefoon:{ 
             required:true, 
             minlength:10, 
             maxlength:10, 
             digits:true 
             }, 

             contactpersonen_email:{ 
              required:true, 
              email:true 
             }, 


             verploegen_form_klantregistratie_KvK_nummer:{ 
             required:true, 
             minlength:8, 
             maxlength:8, 
             digits: true 

             }, 
             verploegen_form_klantregistratie_naam_eigenaar: "required", 
             verploegen_form_klantregistratie_Telefoon_mobiel: "required" 
            }, 
             contactpersonen_voornaam:"required", 
             contactpersonen_achternaam:"required", 

             contactpersonen_functie:{ 
             selectnic:true, 
             required:true 

              }, 


             contactpersonen_email1:{ 
             required:true, 
             email:true 
             },          

            messages: { 
             verploegen_form_klantregistratie_Bedrijfsnaam: "De bedrijfsnaam is niet ingevuld", 
             verploegen_form_klantregistratie_Postcode: { 
              required: "De postcode is niet gevuld", 
              maxlength:"Postcode kan niet langer dan 6 tekens zijn"  
             }, 


      //if(document.getElementById('contactpersonen_canorder_0').checked) { return true; } else { alert('please agree'); return false; } 

             verploegen_form_klantregistratie_Plaats: "De plaats is niet ingevuld", 
             verploegen_form_klantregistratie_Emailadres: { 
              required: "Je hebt geen email adres ingevuld", 
              email: "Je hebt geen geldig email adres ingevuld" 
             }, 

             verploegen_form_klantregistratie_Emailadres_digitale_factuur:{           
             email: "Geen geldig email adres"     
             }, 
             verploegen_form_klantregistratie_Telefoon_vast:{ 
             digits:"Telefoon nummer bestaat uit 10 cijfers" 
             },    

             contactpersonen_telefoon:{ 
             required: "U heeft geen tele ingevoerd", 
             digits:"Telefoon nummer bestaat enkel uit 10 cijfers" 

             }, 

              contactpersonen_email1:{ 
              required: "U heeft geen geldig email adres ingevuld", 
              email: "je email is leeg" 
             }, 

             contactpersonen_voornaam:"U heeft u voornaam niet ingevuld", 
             contactpersonen_achternaam:"U heeft u achternaam niet ingevuld",              

      //contactpersonen_functie:{required:"U heeft niks ingevuld", maxlength:"Functie naam mag niet meer dan 30 karakters bevatten"}, 



             verploegen_form_klantregistratie_KvK_nummer:{ 
             required: "Het KVK nummer is niet ingevuld", 
             digits:"KVK nummer bestaat uit 8 nummers" 

}, 
             verploegen_form_klantregistratie_naam_eigenaar: "De naam van de eigenaar is niet ingevuld", 
             verploegen_form_klantregistratie_Telefoon_mobiel: "Het (mobiele) telefoon nummer is niet ingevuld" 
            } 
           }); 

回答

0

您的邏輯是反向的;您定義的方法在驗證通過時應返回true,並在失敗時返回false。另請注意,您可以在用!反轉布爾值後直接返回test()的結果。試試這個:

jQuery.validator.addMethod("selectnic", function(value, element){ 
    return !/^[0-9]{9}[vVxX]$/.test(value) 
}, "wrong nic number"); 
+0

謝謝。但仍然沒有看到消息 – InfinityGoesAround

+0

我編輯帖子 – InfinityGoesAround

+0

在此處運行正常:https://jsfiddle.net/ry2dm98s/點擊按鈕即可看到它的行動。你確定你的RegEx是正確的 –