jQuery的$(form).submit()不仅针对IE进行解雇(MVC3应用程序)

Sla*_*der 7 javascript forms internet-explorer submit asp.net-mvc-3

我一直在搜索互联网(包括SO),我找不到任何可以帮助我解决问题的方法,所以希望我能得到你们的帮助.

基本上,就像标题所说,.submit()不会在IE中触发.所有其他浏览器工作正常,但在IE(目前为止,8,9,10)它只是不会触发提交.

这是视图代码:

        <form id="@formId" method="post" enctype="multipart/form-data" action="@Url.Content("/ActivityEvent/SubmitCheckpointApproval")">
            <table id="checkpoint-approval" style="width:100%" align="center" class="noBorders">
                <tr>
                    <td style="width: 520px;">
                        <div>
                            Please enter any relevant comments:
                        </div>
                        <div style="margin: 10px 0;">
                            <textarea class="wysiwygSimple" rows="4" cols="60" name="comment" id="checkpoint-comment-@(actTplId)"></textarea>
                        </div>
                    </td>
                    <td style="border: 0; padding-top: 30px; text-align: center; width:70px;">
                        <img alt="key" src="/Content/Images/checkmarkInCircle.png" align="middle" style="width: 100px;
                            height: 100px;" /><br />
                        <p style="text-align: left; margin-top: 10px;">
                            The notes and resources entered here are shared with the student.</p>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" class="ResourcesUploadList">
                        Suggest some resources:<br />
                        <div style="float: left;">
                            <input class="Multi" type="file" name="resourceFiles[]" /></div>
                        <div style="float: left; margin-left: 10px; font-style: italic;">
                            (click browse for each file you want to upload)</div>
                        <div style="clear: both;">
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="border: 0; text-align: center; width:600px;" colspan="2">
                        @if (hasAdminRights)
                        {
                            <input type="button" @Html.Raw(btnStyle) class="activityApprove" name="actionApprove" id="actionApprove" value="Tutor Completion Approval" title = "Approves all activities preceding this checkpoint as complete." onclick="Activity.submitCheckpointApproval('@(formId)', '@(ActivityEvent.EVENT_TYPE_APPROVED)',@(actTplId));" />
                            <input type="button" @Html.Raw(btnStyle) class="activityAttention" name="actionAttention" id="actionAttention" value="Needs Attention" title = "Notifies the student that this project needs additional work prior to completion." onclick="Activity.submitCheckpointApproval('@(formId)', '@(ActivityEvent.EVENT_TYPE_NEEDS_ATTENTION)',@(actTplId));" /> 
                        }
                        <input type="button" @Html.Raw(btnStyle) value="Cancel" title = "Close this." onclick="javascript:$('#checkpoint-approval@(actTplId)').toggle();" />
                    </td>
                 </tr>
            </table>
        </form>
Run Code Online (Sandbox Code Playgroud)

单击按钮时:

Activity = {

submitCheckpointApproval: function (formId, activityEventStatusId, activityTemplateId) {
    var resultsDivId = $("#checkpointResults" + activityTemplateId);
    Activity.showCheckpointLoading(resultsDivId); //Just shows a spinner for loading
    $("#checkpoint-activityEventStatusId-" + activityTemplateId).val(activityEventStatusId);
    $("#" + formId).submit(); //PROBLEM IS HERE??
},
...
};
Run Code Online (Sandbox Code Playgroud)

最后,控制器:

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult SubmitCheckpointApproval()
         //Save everything in here
    }
Run Code Online (Sandbox Code Playgroud)

在IE中调试时,我到了js中的.submit()行,然后从那里运行它.在此之前的一切工作都很好,但随后.submit()来了,它停止做任何事情.没有javascript错误,控制台中没有任何内容,也没有任何问题的迹象.在所有其他浏览器中,.submit()触发就好了,控制器会进入被调用的方法.

有关为何在IE中发生这种情况的任何想法?我敢肯定以前有人遇到过这个!! 请帮忙,我整个下午一直在我的桌子上敲我的头!

多谢你们!

小智 17

我有类似的错误.我的解决方案是:

将JS表单附加到DOM中的div,这样IE知道它就在那里并且可以提交它.

希望能帮助到你

  • +1.这是对我有用的唯一答案. (4认同)

Bar*_*man 9

您可能最适合尝试$.trigger()在jQuery中使用该函数.

以您调用的方式调用它.submit():

$('#' + formId).trigger('submit');
Run Code Online (Sandbox Code Playgroud)

祝好运!

IE中存在一个错误,如果没有,表单将无法正确提交

 <input type="submit" value="Submit" /> element. 
Run Code Online (Sandbox Code Playgroud)

尝试添加一个并用CSS隐藏它.

  • 我验证了提交按钮是否存在(我必须通过复制/粘贴清除将其删除),并且我将`.submit()`切换为`.trigger()`但这并没有改变任何东西.IE仍然只是坐在那里"思考"它. (3认同)