jQuery的$(形式).submit()没有触发IE浏览器只(MVC3应用程序)(jQuery&#

2019-09-01 02:07发布

我一直在网上淘(包括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>

当点击按钮:

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??
},
...
};

最后,控制器:

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult SubmitCheckpointApproval()
         //Save everything in here
    }

当在IE浏览器的调试,我可以在JS的.submit()线,并从那里运行它。 在此之前,一切都工作得很好,但随后.submit()来了,停止做任何事情。 没有的JavaScript错误,没有在控制台上,没有在所有的任何问题迹象。 在所有其他浏览器,.submit()触发蛮好的,控制器中断到方法被调用。

任何想法,为什么这是在IE中发生了什么? 我敢肯定,之前有人碰到过这样的! 请帮帮忙,我整个下午都在敲打我的头我的办公桌上!

多谢你们!

Answer 1:

你可能是最适合使用尝试$.trigger()在jQuery的功能。

同样调用它来您呼叫的方式.submit()

$('#' + formId).trigger('submit');

祝好运!

有一个在IE中的错误:如果没有形式将无法正常提交

 <input type="submit" value="Submit" /> element. 

尝试添加一个与CSS隐藏它。



Answer 2:

我有一个类似的错误。 我的解决办法是:

追加JS形式的DOM一个div,这样IE知道它是存在的,可以提交了。

希望能帮助到你



Answer 3:

你可以创建一个输入提交你想发送和的jQuery单击按钮表单内。

It's与IE浏览器效果很好。

例如:

<form id="@formId" method="post" enctype="multipart/form-data" action="@Url.Content("/ActivityEvent/SubmitCheckpointApproval")">
<input type="submit" class="HiddenBtn" />
</form>

和JS:

$(".HiddenBtn").click();


Answer 4:

能否请你告诉我,你是直接与FileUpload控件的工作或者其隐藏,你是触发/调用它的另一个按钮控件? 其实我有同样的问题。 我的客户希望我们显示看中按钮为FileUpload控件工作。 因此,我们添加了知名度假和按钮一个按钮,FileUpload控件点击我们被触发文件上传点击事件,并与jQuery的帮助下我们得到的文件的路径并保存在数据库中。 一切都在每一个浏览器除了IE以外的工作完美的形式没有得到在IE提交像你解释。 很努力之后我们找到了解决方案,解决方案是我们发现FileUpload控件,并通过设置它的位置放在它究竟是在顶部的按钮,将CSS不透明度:0。 所以现在上传的文件是不可见的,因为在花哨的按钮不透明度0的,但是当用户点击实际上他/她点击文件上传作为其放置在按钮的上方 。 该解决方案后,它的工作就像在每一个浏览器的魅力。 希望这有助于你也。



Answer 5:

您需要设置按钮/输入的类型submit如下:

<button type="submit">Submit</button>

<input type="submit" value="submit">Submit</button>



Answer 6:

我有同样的问题,只能在IE 10和IE 11。对我来说,解决办法是用下面的代码首先附加形式:

document.documentElement.appendChild(form); 

我把那行权之前提交功能

form.on("submit", function (event) {
            event.preventDefault();
...more code
)}


Answer 7:

确切的问题,IE11,至少我的身材,事业MS“你永远不知道什么”如果你让我在街上明智的谈话。

是,当你创建一个这样的表单元素

var formX = $(document.createElement('form'));

并最终增加一些像这样的领域

field1=$("<input type='hidden' id='myid' name='myid' value='whatever' />");
formX.append(field1);

该元素是不是真的添加到DOM,但它仍然在开发者的炼狱,等待你的,最终将其添加到DOM

$("#formdiv").append(formX);

阿图罗伊瓜拉达上述评论,你可以在你的HTML它添加一些DIV,在我的例子ID formdiv

最重要的是 ,该元素将不会在DOM甚至通过动态的形式附加到某些DIV将它添加后发现的。 至少如果你使用JQuery,定期选择将寻找存在于DOM,当你加载的页面元素。 所以,你需要使用某种选择,将在搜索新添加的元素再次遍历DOM。 我曾经发现 ,虽然我猜使用。对应该工作了。

$(document).find(formX).submit();


文章来源: jQuery's $(form).submit() not firing for IE only (MVC3 app)