繁体   English   中英

jQuery验证器添加方法未定义

[英]jQuery validator add method undefined

https://jsfiddle.net/c50m4pos/1/

简单的验证器可以工作,但是一旦我添加了更多类似上面的内容,事情就开始变得奇怪了。

 $(document).ready(function($) { $('#testform').validate({ rules: { testinput: { required: true, textonly: true, messages: { required: 'Input is required' } } } }); $.validator.addMethod( "textonly", function(value, element) { var valid = false; var check = /[^-'\\.a-zA-Z0-9\\s\À-\Ö\Ø-\ö\ø-\ʮ]/.test(value); if (check == false) valid = true; return this.optional(element) || valid; }, "Please only enter letters, digits, spaces, periods, or hyphens." ); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script> <form id="testform"> <p> <label>testinput 1</label> <label for="testinput" class="error" id="testinput-error"></label> <input id="testinput" name="testinput"> </p> <button type='submit'> Submit </button> </form>

Safari 返回错误

[错误] 类型错误:未定义不是对象(正在评估“a.validator.methods[d].call”)。 检查元素 testinput 时发生异常,请检查“消息”方法。

火狐说

类型错误:a.validator.methods[d] 未定义 ...f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(这,我,

新方法“textonly”有效,它优雅地显示错误消息。 但是,当重新验证输入字段时(您重新输入没有非法字符的文本),就会发生错误。

我尝试在 textinput 规则下添加“textonly”自定义消息,但仍然出错。 我该如何解决?

messages对象是rules的兄弟......它不像你所做的那样属于rules内部。

$('#testform').validate({
    rules: {
        testinput: {
            required: true,
            textonly: true,
        }
    },
    messages: {  // sibling of 'rules' object
        testinput: {
            required: 'Input is required',
            textonly: 'letters only'  // over-ride '.addMethod()' message
        }
    }
});

演示https : //jsfiddle.net/c50m4pos/2/

请参阅messages文档以了解正确用法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM