在我的表单中,我使用maxlength
作为输入字段,也使用jquery.validate.js来指示一些错误消息。
- 如果我在 html 中单独使用
maxlength
,则只会显示小弹出窗口。 - 如果我单独使用验证,我将收到正确的错误消息,但用户可以输入超过限制。
尽管如此,我实际上并不想要这些场景...
我需要的是一旦到达其maxlength
,它应该显示一条错误消息,并且不应该允许用户输入超过 40 个字符。
我不想使用jquery自定义函数,喜欢计算on keyup
!
我尝试使用以下代码:
<form id="myForm">
<input name="myName" required maxlength="40" />
</form>
我的jQuery代码如下:
$("#myForm").validate({
rules :{
myName :{
required :true,
maxlength:40
},
},
messages:{
maxlength:"You crossed a maximum limit"
}
});
-
从
input
元素中删除 HTML 5 属性。 当您已经在.validate()
中声明了相同的规则时,您不需要它们。 我认为自动 HTML 5 浏览器验证消息在对损坏的 jQuery 验证进行故障排除时让您感到困惑。 -
使用
messages
选项指定自定义消息时,还必须指定输入name
,类似于rules
选项格式。 在messages
中,只有规则名称是可选的。 换句话说,您可以在输入name
本身上放置自定义消息,它将自动应用于该输入的所有规则。 但是,您无法像以前那样将自定义消息放置在未分配给输入的规则上。
否则,我在您的代码中看不到问题...
演示:http://jsfiddle.net/a5vBU/
HTML:
<form id="myForm">
<input name="myName" />
</form>
j查询:
$(document).ready(function () {
$("#myForm").validate({
rules: {
myName: {
required: true,
maxlength: 40
} // <-- removed trailing comma
},
messages: {
myName: { // <-- need input name
maxlength: "You crossed a maximum limit"
}
}
});
});