jQuery 验证不起作用

0 forms jquery jquery-validate

这是我第一次使用 jQuery 验证,我遇到了问题。这是我的表单的 HTML:

<form id="signup" novalidate="novalidate">
            <div class="form-group">
              <label class="sr-only" for="emailAddress">Email address</label>
              <input type="email" class="form-control" id="emailAddress" placeholder="Enter email" data-required>
            </div>
            <div class="form-group">
              <label class="sr-only" for="emailAddressConfirm">Confirm Email address</label>
              <input type="email" class="form-control" id="emailAddressConfirm" placeholder="Confirm email" data-required>
            </div>
            <div class="form-group">
              <label class="sr-only" for="password">Password</label>
              <input type="password" class="form-control" id="password" placeholder="Password" data-required>
            </div>
            <div class="form-group">
              <label class="sr-only" for="passwordConfirm">Confirm Password</label>
              <input type="password" class="form-control" id="passwordConfirm" placeholder="Confirm Password" data-required>
            </div>
            <button type="submit" class="btn btn-primary">Sign up</button>
          </form>
Run Code Online (Sandbox Code Playgroud)

还有我的 JavaScript:

$("form#signup").on("submit", function(){
    $("form#signup").validate({
        rules: {
            password: {
                required: true,
                minlength: 5
            },
            passwordConfirm: {
                required: true,
                minlength: 5,
                equalTo: "#password"
            }
        },
        messages: {
            password: {
                required: "Please provide a password",
                minlength: "Your password must be at least 5 characters long"
            },
            passwordConfirm: {
                required: "Please provide a password",
                minlength: "Your password must be at least 5 characters long",
                equalTo: "Please enter the same password as above"
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我已经从官方网站上复制了示例代码,但修改了输入字段 ID。我不确定为什么它不起作用。(我只是想正确地获得密码字段验证,因为我可以从中复制电子邮件输入的代码)。

Spa*_*rky 5

1)您缺少name所有相关input元素的属性。为了使该插件正常运行,这是绝对必需的。

文件

name属性对于输入元素是“必需的”,没有验证插件将无法工作

虽然没有说明,但name属性也必须是唯一的,因为这是插件跟踪所有已验证表单元素的方式。


2)绝对不要将您的调用包装.validate()在一个submitclick处理程序中。只需在文档就绪时调用它。

$(document).ready(function(){

    $("form#signup").validate({ // initialize plugin on your form
        ....
Run Code Online (Sandbox Code Playgroud)

.validate()方法仅用于初始化插件,click并自动捕获并拦截提交的事件。


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

请注意,您不需要在第二个密码字段上复制相同的规则。由于它必须始终与第一个匹配,因此这些都是多余的。

$("form#signup").validate({
    rules: {
        password: {
            required: true,
            minlength: 5
        },
        passwordConfirm: {
            equalTo: "password" // 'name' of other field
        }
    }
Run Code Online (Sandbox Code Playgroud)

请参阅SO Tag Wiki 页面上的示例代码和提示。