。提交()不起作用

时间:2015-04-26 04:18:10

标签: jquery asp.net-mvc-3 form-submit

我有一个来自下面的骨架

@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" />                     


 }

在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();
                 }
            });

当所有验证通过时,error_flag将为0并且它进入if条件并给我警告&#34;正在提交&#34;但是表格没有提交。

代码中缺少什么?

2 个答案:

答案 0 :(得分:18)

您需要更改&#34;提交&#34;输入按钮的名称。别的东西。有一个名为&#34的元素;提交&#34;导致表单的提交方法不再起作用,这意味着表单无法通过JavaScript提交(至少不容易)。

这是因为一个名为&#34;提交&#34;的输入元素。可以通过其名称引用,如下所示:form1.submit。也就是说,input元素被添加为表单对象的属性,属性名称是input元素的名称。这基本上隐藏了表单原型上的submit函数。

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

HTMLFormElement.prototype.submit.call($("#form1")[0]);

答案 1 :(得分:0)

或者,您可以捕获表单的本机提交事件,然后将JavaScript代码集中在表单的提交方法中,而不是按钮的单击事件。

该按钮需要具有submit类型(单击具有type=submit自然触发事件的按钮)。

<input name="submit" type="submit" value="Submit" id="Sub" class="btn btn-success" style="margin-left:950px" />

然后是你的JavaScript。

$(document).ready(function () {
    $("#form1").submit(function (e) {

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

            }
            else if (s_row_count == 1) {
                return;
            }
        }

        // Thre were no errors!
        alert("submitting");

        // If you want to override the form submit method completely, use...
        // e.preventDefault();

    });
});