自定义jQuery验证规则无法正常工作

时间:2016-03-04 12:35:11

标签: javascript jquery html html5 jquery-plugins

我尝试使用自定义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"
                                    }
                                });

1 个答案:

答案 0 :(得分:0)

你的逻辑是倒退的;您定义的方法应在验证通过时返回true,在失败时返回false。另请注意,在使用test()反转布尔值后,您可以直接返回!的结果。试试这个:

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