jQuery验证 - 空密码不停止表单

时间:2014-05-28 18:29:43

标签: html asp.net-mvc forms jquery-validate unobtrusive-validation

我有一个使用jQueryValidate的简单表单:

 $("#frmMain").validate();

留下空的电子邮件将导致显示验证并停止表单,密码可以奇怪地留空并且表单提交。

当密码为空时,我需要做哪些更改才能确保表单无法提交,就像电子邮件现在所做的那样:

 <form action="Login" id="frmMain" method="post" name="frmMain" role="form">

 <input class="input-validation-error form-control" data-msg-email="The Email field is not a valid e-mail address." data-msg-required="The Email field is required." data-rule-email="true" data-rule-required="true" id="Email" name="Email" type="email" />

 <input autocomplete="off" class="input-validation-error form-control" data-val="true" data-val-length="The new password must be at least 8 characters long" data-val-length-max="15" data-val-length-min="8" data-val-required="Password is required" id="Password" name="Password" type="password" />

注意,我设置了验证器的默认值:

    submitHandler: function (form) {
        if ($(form).valid()) {
            form.submit();
        }
    }

1 个答案:

答案 0 :(得分:0)

这里的代码是多余的,多余的......

submitHandler: function (form) {
    if ($(form).valid()) {
        form.submit();
    }
}
  • 您不需要if form.valid(),因为submitHandler仅在有效表单上触发。 (您的有条件的if永远不会是false)。

  • 您不需要form.submit(),因为这是表单有效时的默认行为。 (form操作将会触发)

没有留下任何内容......因此您根本不需要为此案例指定自定义submitHandler。 (它可以完全像我在下面的jsFiddle中所做的那样被遗漏了)


引用OP

  

“...密码可以奇怪地留空并且表单提交。当密码为空时,我需要进行哪些更改以确保表单不会提交”

如果没有指定强制要求填写字段的规则,那有什么奇怪的?如果您需要在密码为空时停止提交,则需要required规则。只需将电子邮件字段中的属性与密码字段进行比较,您就会发现data-rule-required是指定required规则的位置...

data-rule-required="true"

将此属性添加到密码字段,现在必须填写该字段。

工作演示:http://jsfiddle.net/tv49y/