【问题标题】:Custom jQuery validate rule not working correctly自定义 jQuery 验证规则无法正常工作
【发布时间】:2016-03-04 12:35:10
【问题描述】:

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

 <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"
                                    }
                                });

【问题讨论】:

    标签: javascript jquery html jquery-plugins


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。但我仍然没有看到消息
    • 在这里工作正常:jsfiddle.net/ry2dm98s 点击按钮查看它的实际效果。你确定你的正则表达式是正确的
    • 啊,我看到了你的例子。但是“你的 RegEx”是什么意思?
    • 你确定你的 RegEx 是什么意思
    • 我放了完整的脚本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2013-05-05
    相关资源
    最近更新 更多