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\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02AE]/.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>
&#13;
Safari返回错误
[错误] TypeError:undefined不是对象(评估&#39; a.validator.methods [d] .call&#39;)。检查元素testinput时发生异常,检查&#39;消息&#39;方法。
Firefox说
TypeError:a.validator.methods [d]未定义... f){e = {method:d,参数:f [d]};尝试{if(c = a.validator.methods [d] .CALL(此,I,
新方法&#34; textonly&#34;工作,它优雅地显示错误消息。但是,当重新验证输入字段(您重新输入没有非法字符的文本)时,会发生错误。
我已尝试添加&#34; textonly&#34; textinput规则下的自定义消息,但仍然是错误。 我该如何解决这个问题?
答案 0 :(得分:0)
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
}
}
});
DEMO :https://jsfiddle.net/c50m4pos/2/
请参阅documentation for messages
以了解正确用法。