3

使用 ASP.NET,为什么当使用 input type="submit" 元素而不是 html 按钮元素时,bassistance.de jQuery 验证插件会阻止表单提交?

使用 html 按钮 (type="submit") 标记时会触发验证,但仍会提交表单。

有没有办法让 jQuery 验证插件与 html 按钮元素一起工作?

一个简单的例子:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <script type="text/javascript">
            $(document).ready(function () {
                $("#form1").validate({
                    rules: {
                        txtFirstName: {
                            required: true
                        }
                    },
                    messages: {
                        txtFirstName: {
                            required: "* First Name required<br/>"
                        }
                    }
                });
            });
        </script>
    </head>

    <body>
        <form id="form1" runat="server">
            <input id="txtFirstName" name="txtFirstName" type="text" />
            <input id="btnSubmit1" type="submit" runat="server" value="Submit" /> <!-- WORKS! -->
            <button it="btnSubmit2" type="submit" runat="server">Submit</button> <!-- DOESN'T WORK -->
        </form>
    </body>
</html>
4

1 回答 1

6

它似乎是这样设计的:

// when a submitHandler is used, capture the submitting button
if (validator.settings.submitHandler) {
  inputsAndButtons.filter(":submit").click(function () {
    validator.submitButton = this;
  });
}

不幸的是,这似乎已成定局,别无选择。上的文档:select似乎对此有了更多的了解:

选择:submit器通常适用于按钮或输入元素。请注意,某些浏览器将元素视为type="default"隐式处理,而其他浏览器(例如 Internet Explorer)则不会。

一种解决方案是将您绑定button到调用验证的函数。在下面的示例中,我们看到这是通过锚点完成的:

$("#myform").validate();
$("a.check").click(function() {
  $("#myform").valid();
});
于 2012-05-19T16:20:19.767 回答