.提交()不起作用

Sac*_*chu 5 jquery form-submit asp.net-mvc-3

我有一个像下面的骨架

@using (Html.BeginForm("Preapprove", "Preapproval", FormMethod.Post, new { name = "form1", id = "form1", enctype = "multipart/form-data", @class = "form-horizontal" }))
{
  ......
<input name="submit" type="button" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />                     


 }
Run Code Online (Sandbox Code Playgroud)

并在jquery我提交此表单上的点击甚至按钮ID Sub

$(document).ready(function () {
            $('#Sub').click(function (e) {
              var error_flag = 0;

                if (d_row_count == 1) {
                    error_flag = 1;
                }
                else if (d_row_count > 1) {
                    if (code == null || code.trim() == '') {
                        error_flag = 1;

                    }
                    else if (s_row_count == 1) {
                        error_flag = 1;
                    }
                }
                if (error_flag != 1) {
                    alert("submitting");
                    $("#form1").submit();
                 }
            });
Run Code Online (Sandbox Code Playgroud)

当所有验证通过时,error_flag将为0并且它进入if条件并给我警告"正在提交"但表单未提交.

代码中缺少什么?

Joh*_*n S 18

您需要将输入按钮的名称从"提交"更改为其他内容.拥有一个名为"submit"的元素会导致表单的提交方法不再有效,这意味着无法通过JavaScript提交表单(至少不容易).

原因是因为名为"submit"的输入元素可以通过其名称引用,如下所示:form1.submit.也就是说,input元素被添加为表单对象的属性,属性名称是input元素的名称.这基本上隐藏了submit表单原型上的功能.


我上面说"不容易",因为以下内容仍然有效(至少在Firefox中):

HTMLFormElement.prototype.submit.call($("#form1")[0]);
Run Code Online (Sandbox Code Playgroud)