[英]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.