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)
$("form input").keypress(function (e) {
if(e.which === 13) {
$("form").submit();
}
});
Run Code Online (Sandbox Code Playgroud)
以上是一个正确的修复.参考:IE没有提交我的表格输入按键回车键?
我认为外翻比你想象的要复杂得多......
当使用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工作后隐藏...
| 归档时间: |
|
| 查看次数: |
28954 次 |
| 最近记录: |