2 回答
确保按钮有type="submit"
. 你必须在 IE 中提到这一点;在 Chrome 和 Firefox 中,这似乎是默认类型。
我正在使用它,它在任何地方都可以正常工作。尝试表单提交处理程序而不是单击:
<form id="1234">
<input type="text" />
<button type="submit" id="asdasd" >Button </button>
</form>
<script>
$("#1234").submit(function(){
alert("Hello World");
})
</script>
我最近偶然发现了这个!我简直不敢相信它正在发生 - 因为帖子数据被正确传递了!
对此没有合乎逻辑的解释,现在我必须说这只是 Internet Explorer 未被注意到的错误!
解决方案 1
Internet Explorer 似乎在加载时扫描页面并确定哪些提交按钮是可见的,然后将输入提交功能附加到这些表单。
要解决此问题,您可以使用以下 jQuery 代码:
$(document).ready(function() {
$('input').keydown(function(e){
if (e.keyCode == 13) {
$(this).parents('form').submit();
return false;
}
});
});
return false 在 Internet Explorer 中相当重要,因为它可以防止您在点击 return 时听到的哔哔声。哔声是说“你不能在这里输入!”,但返回 false 会取消按键,因此浏览器不会发出警告。
阅读有关此内容和人们所说的更多信息:在 IE 中使用 Enter 提交表单
解决方案 2
另一个解决方案可能是,但在我的情况下它不起作用是添加额外的隐藏输入字段:
<!-- Fix for Internet Explorer bug (One text input and submit, disables submit on pressing "Enter") -->
<div style="display:none">
<input type="text" name="hiddenText"/>
</div>
解决方案 3
另一种解决方案是检测用户的浏览器,如果是 Internet Explorer,则取消输入键并强制用户单击提交按钮以正确提交。
function browserIE(){
if($.browser.msie && parseInt($.browser.version) <= 8){ // Let's detect if it's Internet Explorer 8 or lower
return true;
}
return false;
}
$(document).keypress(function(event) { // Bind keyboard events
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13' && browserIE()){ // When user hits 'enter key' (keyCode 13) and only when the browser is Internet Explorer version 8 or lower
event.preventDefault();
event.stopPropagation();
}
});
这是强制 Internet Explorer 用户单击提交按钮以执行正确提交的唯一方法,因为正如我在按 Enter 之前提到的那样,在该字段上不会进行正确提交,只会以简单的页面重新加载而告终!