我的页面上有一个表单,有一个文本输入和一个提交输入,可以将信息发送到php脚本。用户可以通过按键盘上的“输入”或单击“提交”按钮来提交表单。
在IE9和其他浏览器中,用户可以点击“输入”或点击提交按钮,一切正常,但在IE 8中,如果用户点击提交按钮,它工作正常,但如果按“输入”表格不发送信息。
表单打开一个新标签,所以我知道表单是在用户点击“输入”时提交的,只是信息没有发送到IE8上的新页面。
有人有什么建议吗?
谢谢!
代码:
<form action="/search.php" method="post" onsubmit="location.reload(true)" target="_blank" name="myform">
<table style="width: 100%; min-width: 728px; margin: 150px 0px 170px 0px; text-align: center;">
<tr>
<td valign="middle"><img alt="Logo" src="vivvulogo.png" /><br />
<input maxlength="256" name="query" id="query" style="width: 400px; height: 25px; font-size: medium;" type="text" />
<input name="submit" style="height: 30px; width: 120px; height: 30px; font-size: medium; background-color: #CCCCCC; border-style: solid; border-color: #999999; border-width: 1px; vertical-align: top;" type="submit" value="Search" /><br />
</td>
</tr>
</table>
</form>
答案 0 :(得分:0)
如果您使用的是按钮标签,请按Enter键不会提交表单...
使用display:none隐藏提交按钮,将它们放在页面上,将它们隐藏在overflow:hidden或任何其他方法中也会破坏enter-to-submit功能。
如果在加载页面时隐藏表单并使用JavaScript显示,则输入提交也将被破坏。
Internet Explorer似乎在加载时扫描页面并确定哪些提交按钮可见,然后将输入提交功能附加到这些表单。
如果没有看到任何代码,很难说出最适合您的解决方案,但是为了解决这些问题,您通常可以使用以下JavaScript:
function addInputSubmitEvent(form, input) {
input.onkeydown = function(e) {
e = e || window.event;
if (e.keyCode == 13) {
form.submit();
return false;
}
};
}
window.onload = function() {
var forms = document.getElementsByTagName('form');
for (var i=0;i < forms.length;i++) {
var inputs = forms[i].getElementsByTagName('input');
for (var j=0;j < inputs.length;j++)
addInputSubmitEvent(forms[i], inputs[j]);
}
};
如果您正在寻找jQuery解决方案......
$(function(){
$('input').keydown(function(e){
if (e.keyCode == 13) {
$(this).parents('form').submit();
return false;
}
});
});
答案 1 :(得分:0)
尝试使用
target="_self"
而不是
target="_blank"
希望这应该有用。