我有一个在IE8中输入不起作用提交表单的问题。 我已经产生了测试页,揭露了这个问题。 这似乎显示在表格onLoad
函数禁用的结果,确定输入按钮不触发提交了。 这是一个错误在IE8或者是它的一些安全问题?
复制此代码是:
onload = function() { document.getElementById('test').style.display = 'block'; }
#test { display: none; }
<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>
Answer 1:
我已经找到妥善的解决办法,并希望它与u人分享。
而不是使用<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>
Answer 2:
$("form input").keypress(function (e) {
if(e.which === 13) {
$("form").submit();
}
});
以上是适当的修复。 参考: 即不提交我的表单上输入回车键的按下?
Answer 3:
我想寄托都是比你想象的要复杂得多......
当窗体的显示值设置为none用CSS类或者只是在页面inital一个样式属性,点击回车在文本字段中键只有当你有文本类型不止一个输入字段不工作...如果你有一个文本字段,它工作正常..如果你有一个以上的,它不火的表单提交...
在这里,我做了一个演示...
工作正常(范式) 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选择器。 你可以把它与jQuery隐藏像
$(".hidden").hide();
在页面加载显示形式为毫秒,但jQuery的工作后获取隐藏...
Answer 4:
我不能说,如果它是一个bug究竟,但我可以肯定,你报道的行为,IE 8已经改变了......我想这可能是一个错误,而不是故意的变化。
如果表单设置使用CSS显示:无默认提交按钮的行为是行不通的。
其他浏览器,包括IE 7(或者甚至IE 8使用IE 7标准兼容模式)没有问题。
我只要使用高度围绕问题自己的工作:0像素; 在CSS,然后有JavaScript的设置适当的高度时,我想展现形式。 使用高度替代,默认的输入键提交行为似乎正常工作。
Answer 5:
旧票,但我想添加什么,我认为是的解释:
IE8做以下奇怪的事情:回车键将提交表单,但是任何
<input type="submit" name="MySubmitButton" value="I hope I detect THIS VALUE in POST" />
不会在POST发送。
IE9改变行为并向外发送值。 Chrome的一贯发送的值,至于我的测试显示。
我希望这有帮助...
Answer 6:
对于任何未来的用户绊脚石就这个问题:
什么工作对我来说是增加了DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Answer 7:
一个修复到什么@Jitendra Pancholi suggested-现在只提交我们想要的形式,不是所有的人
$("form input").keypress(function (e) {
if(e.which === 13) {
$(this.form).submit();
}
});
Answer 8:
我想它在IE8,它为我工作。 你必须确保该表单的一部分已经集中,但。
JavaScript有你可以用它来设置焦点,如果这就是你所需要的聚焦功能。
var textbox = document.getElementById("whatever name input box's id will be");
if(textbox) textbox.focus();
Answer 9:
您可能需要一个onkeyup事件添加到您的输入框,这样如果你打在输入框中输入一个那么它也将提交。
作为CodePartizan提到的,你需要将重点放在按钮,否则,在这样的按钮,如果你选项卡,或点击它,它似乎为我工作也。
Answer 10:
我认为, 亚辛已经拿到了点。 我有同样的问题:它的知名度是“隐藏”在表单中多个文本字段。 我的解决方法(以防止闪烁的形式)的形式,不透明度设置为0的CSS,然后自定义文件上准备与jQuery它的风格设置。
我相信这是不是与JS来解决。
Answer 11:
是啊,我被这个错误太今天咬伤。 我发现这个解决方法,虽然(DIFF从OP):
<script type="text/javascript">
onload = function() {
document.getElementById('test').style.display = 'block';
+ document.getElementById('test').innerHTML =
+ document.getElementById('test').innerHTML;
}
</script>
</head>
单纯从自身的内容重新创建表单的内容。 让人惊讶。 但是,它的工作原理。 (著名遗言...)
Answer 12:
这在IE8为我工作。 我只使用一个输入字段,当有这个问题。
了解更多: http://www.rachaelarnold.com/dev/archive/enter-key-form-submission-bug#ixzz2Y5Zwgj2k
Answer 13:
我有同样的问题与IE和没有解决方案的帮助,直到我读这样的:
http://www.rachaelarnold.com/dev/archive/enter-key-form-submission-bug#ixzz2Y5Zwgj2k
我的表格只有一个输入字段....咄! :)
Answer 14:
找到一个可行的解决方案。
请提交按钮无形的,而不是使用显示:无;
input#submit {
color: transparent;
background: transparent;
border: 0px;
}
文章来源: In IE8 enter key in a form does not work