0
4

2 回答 2

0

确保按钮有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>
于 2012-08-31T17:25:28.530 回答
0

我最近偶然发现了这个!我简直不敢相信它正在发生 - 因为帖子数据被正确传递了!

对此没有合乎逻辑的解释,现在我必须说这只是 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 之前提到的那样,在该字段上不会进行正确提交,只会以简单的页面重新加载而告终!

jsFiddle 工作示例

另推荐阅读:Internet Explorer 及更高版本中的按钮与 Input[type="submit"]

于 2012-08-31T16:24:49.470 回答