如果在jQuery中超过maxlength,如何指出错误?

时间:2014-02-18 13:00:04

标签: jquery jquery-validate

在我的表单中,我使用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"
    }
});

1 个答案:

答案 0 :(得分:0)

  • input元素中删除HTML 5属性。当您已经在.validate()内声明了相同的规则时,您不需要它们。我认为自动HTML 5浏览器验证消息让您在对破坏的jQuery Validate进行故障排除时感到困惑。

  • 使用messages选项指定自定义消息时,必须还指定输入name,类似于rules选项格式。在messages内,只有规则名称是可选的。换句话说,您可以在输入name本身上放置自定义消息,它将自动应用于该输入的所有规则。但是,您不能像未完成的那样将自定义消息放置在未分配给输入的规则上。

否则,我的代码中没有问题......

DEMO:http://jsfiddle.net/a5vBU/

<强> HTML

<form id="myForm">
    <input name="myName" />
</form>

<强>的jQuery

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