如何在窗体上进行jquery验证后阻止bootstrap模式关闭?

时间:2014-11-12 01:17:38

标签: jquery asp.net-mvc twitter-bootstrap jquery-validate

平台:ASP.NET 4.5,MVC 5,最新的jQuery,bootstrap和jQuery验证

我的问题是,一旦我验证了表单,我就想进行ajax调用,而不是关闭模式。

这是我的表格:

<form id="loginform" action="">
    <div id="login-login">
          <span>
            <input type="email" name="login-email" id="login-email" placeholder="my@email.com" />
            <input class="btn btn-success submit" type="submit" id="login-submit" value="Submit" />
          </span>
    </div>
 </form>

我的jQuery在我的document.ready

$("#login-form").popover(); // this is the overall modal id name

$("#loginform").validate({
    rules: {
        email: {
            required: true,
            email: true
        },
        submitHandler: function (form) {
            console.log("submit on ok");
            return false;
        }
    },
});

会发生什么:

当我输入无效的电子邮件时,我看到默认的jQuery验证火,并向我显示一条友好的消息。但是,当条目正确时,我没有看到console.log消息(我也使用了警报),模式只是关闭而我不想要它。不知道我还应该做什么?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:3)

<input type="email" name="login-email" id="login-email" placeholder="my@email.com" />

jQuery Validation插件在您的情况下无法正常工作,因为......

  1. 当您定位name="login-email"时,您的元素包含name="email"。这必须与name属性匹配。

    rules: {
        "login-email": {  // <- this must match the 'name' of the field
            required: true,
            email: true
        },
        ....
    
  2. 您错误地嵌套了submitHandler选项中的rules。这个回调是rules的兄弟,而不是孩子。

    rules: {
        ....
    },
    submitHandler: function (form) {
        console.log("submit on ok");  // this now fires on a valid form submit
        // ajax goes here
        return false;
    }
    
  3. 工作演示:http://jsfiddle.net/2axtuqed/