在IE8中输入表单中的键不起作用

And*_*dre 23 forms enter internet-explorer-8

我有一个问题,在IE8中,输入无法提交表单.我已经生成了一个测试页面来揭示这个问题.似乎在onLoad函数中显示表单会禁用enter按钮不再触发提交的结果.这是IE8中的错误还是一些安全问题?

重现这个的代码是:

onload = function() { 
    document.getElementById('test').style.display = 'block'; 
} 
Run Code Online (Sandbox Code Playgroud)
#test {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)
<form id="test" method="get" action="javascript:alert('woei!')"> 
    <input type="text" name="user" value=""> 
    <input type="password" name="pw" value="">
    <input type="submit" value="submit" id="submit"> 
</form> 
Run Code Online (Sandbox Code Playgroud)

And*_*dre 13

我找到了一个合适的解决方案,并希望与大家分享.

而不是使用<input type="submit...>,使用<button type="submit"...>.这将做在其他浏览器(IE6-7,FF3)一模一样在IE8的作品.:)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<style type="text/css">
#test {
    display: none;
} 
</style> 
<script type="text/javascript"> 
onload = function() { 
    document.getElementById('test').style.display = 'block'; 
};
</script> 
</head> 
<body> 
<form id="test" method="get" action="javascript:alert('woei!')"> 
    <input type="text" name="user" value="" /> 
    <input type="password" name="pw" value="" />
    <button type="submit" value="submit" id="submit"></button>
</form> 
</body> 
</html>
Run Code Online (Sandbox Code Playgroud)

  • 我没有看到这在IE 8中工作.我仍然在另一端获得"null"值.只测试"if(submit =="submit"|| submit == null)"更容易,假设"null"表示它们在IE 8或9中点击"ENTER". (2认同)

Jit*_*oli 9

$("form input").keypress(function (e) {
   if(e.which === 13) {
      $("form").submit();
   }
});
Run Code Online (Sandbox Code Playgroud)

以上是一个正确的修复.参考:IE没有提交我的表格输入按键回车键?


Yas*_*gul 6

我认为外翻比你想象的要复杂得多......

当使用css类将表单的显示值设置为none或仅在页面初始化时使用样式属性时,仅当您有多个具有文本类型的输入字段时,才能使用文本字段中的回车键...你有一个文本字段它工作正常..如果你有多个,它不会触发表单提交...

我在这里做了一个演示......

工作正常(普通表格) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/one.html

工作正常(表单隐藏和后退可见,但它是一个文本输入) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/two.html

不起作用(表单隐藏和后退可见,但它有两个文本输入) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/three.html

我认为最好的方法是给对象一个.hidden类,但不为这个css选择器设置display:none.你可以用jquery隐藏它

$(".hidden").hide();

当页面加载时,表单显示为毫秒,但在jquery工作后隐藏...