2016-03-04 157 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是正确的 –