Javascript 为什么IE9在按下enter键时调用get方法而不是post,如何修复?

Javascript 为什么IE9在按下enter键时调用get方法而不是post,如何修复?,javascript,jquery,internet-explorer,jquery-ui,Javascript,Jquery,Internet Explorer,Jquery Ui,输入键用于在下面发布表单。 按enter键发送IE9中的get请求: 第一个输入发送get,第二个输入发送post,第三个输入发送get请求等 如果按enter键,如何仅发送post请求? 在firefox中,只有post请求被正确发送 <form id="Form" method='post' target='DocumentRegisterReportpdf' action='/erp/Report/Render?_entity=DocumentRegisterReport'&

输入键用于在下面发布表单。 按enter键发送IE9中的get请求: 第一个输入发送get,第二个输入发送post,第三个输入发送get请求等

如果按enter键,如何仅发送post请求? 在firefox中,只有post请求被正确发送

<form id="Form" method='post' target='DocumentRegisterReportpdf'
    action='/erp/Report/Render?_entity=DocumentRegisterReport'>
... form fields

<select class="ui-widget-content ui-corner-all" id="_Report" name="_Report" size="10">
<option selected="selected" value="AKART001">Report1</option>
<option value="A3001">Report2</option>
<option value="A3003">Report3</option>
</select>

<input id='_submit' type='submit' value='Show PDF' />
</form>
    <script type="text/javascript">
        $(function () {
            $('#_Report').keypress(function (e) { if (enter(e)) { $('#Form')[0].submit(); cancel(e); } });
            $('#_submit').focus();
        });

function enter(e) { return e.keyCode === $.ui.keyCode.ENTER && !e.ctrlKey && !e.altKey; }

function cancel(evt) {
    evt.returnValue = false;
    evt.keyCode = 0;
    evt.cancelBubble = true;
    evt.preventDefault();
    evt.stopPropagation();
}
   </script>

... 表单字段
报告1
报告2
报告3
$(函数(){
$('##u Report').keypress(函数(e){if(输入(e)){$('#Form')[0].submit();cancel(e);});
$('#_submit').focus();
});
函数enter(e){return e.keyCode==$.ui.keyCode.enter&&!e.ctrlKey&&!e.altKey;}
功能取消(evt){
evt.returnValue=false;
evt.keyCode=0;
evt.cancelBubble=真;
evt.preventDefault();
evt.stopPropagation();
}
或者您可以克隆表单,将其方法从
post
更改为
get
,然后提交:

$('#_Report').keypress(function (e) { 
    if (enter(e))
        {
             var post_or_get = 'post';
             $('#Form')
                 .clone()
                 .attr('method', post_or_get)
                 .submit();
        }
});

您的代码只发送get请求。我要求只发送post请求。问题是,由于未知原因,按enter键会按顺序显示get和post请求。如何只发送
post
请求?我在IE9中尝试了更新的方法。ajax调用每次都发送
get
请求。clone()方法不发送任何请求,它似乎忽略了submit()调用。如何在输入时发送post请求?问题包含
target='DocumentRegisterReportpdf'
。您的ajax调用不会打开新选项卡。另外,ajax调用尝试在url中传递表单数据。对于大量数据,数据会被截断。对于post请求,应该使用缓冲区。
$('#_Report').keypress(function (e) { 
    if (enter(e))
        {
             var post_or_get = 'post';
             $('#Form')
                 .clone()
                 .attr('method', post_or_get)
                 .submit();
        }
});