Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证使用输入类型=";提交;,但不是html按钮元素。为什么?_Jquery_Validation_Button_Jquery Validate - Fatal编程技术网

jQuery验证使用输入类型=";提交;,但不是html按钮元素。为什么?

jQuery验证使用输入类型=";提交;,但不是html按钮元素。为什么?,jquery,validation,button,jquery-validate,Jquery,Validation,Button,Jquery Validate,使用ASP.NET,为什么basistance.de jQuery验证插件在使用input type=“submit”元素而不是html按钮元素时阻止表单提交 使用html按钮(type=“submit”)标记时会触发验证,但表单仍在提交中 有没有办法让jQuery验证插件与html按钮元素一起工作 一个简单的例子: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">

使用ASP.NET,为什么basistance.de jQuery验证插件在使用input type=“submit”元素而不是html按钮元素时阻止表单提交

使用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>

$(文档).ready(函数(){
$(“#表格1”)。验证({
规则:{
txtFirstName:{
必填项:true
}
},
信息:{
txtFirstName:{
必填项:“*必填名
” } } }); }); 提交
它似乎是这样设计的:

// 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)则不这样做

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

$("#myform").validate();
$("a.check").click(function() {
  $("#myform").valid();
});

@Johnathan Sampson嗯,我不知道-这在插件的源代码中:var inputsAndButtons=this.find(“input,button”)@Nealio我也看到了,试图看看是否有什么东西。@Johnathan Sampson我会让你带头-我不是JS专家。它可以与
元素一起工作,只要它包含
type=“submit”
属性。您的按钮有一个输入错误:
应该是
id
。另外,您正在测试哪些浏览器?IE8-10似乎工作正常。Chrome、Opera和Firefox也是如此。(测试:)是的,打字错误只是一个例子。我在大多数浏览器中进行了测试,但行为相同。我能看到的唯一区别是asp.net正在向button元素添加一个onclick属性(onclick=“\uu doPostBack('ctl00$MainContent$btnSubmit2',”),我似乎无法回避它。只要
按钮
类型=“submit”
,它就可以正常工作: