我有一个onchange =“do_something()”的输入元素。当我输入并按下回车键时,它在Firefox和Chromium上正确执行(do_something,然后提交)(未在IE和Safari中测试),但是在Opera中它没有(它立即提交)。我尝试使用这样的延迟:
<form action="." method="POST" onsubmit="wait_using_a_big_loop()">
<input type="text" onchange="do_something()">
</form>
但它也没有用。
你有什么建议吗?
编辑: 最后我使用了iftrue和crescentfresh提供的解决方案的混合,只是解除了场的重点以解除do_something()方法,我之所以这样做是因为其他一些输入字段还有其他方法在更改。
$('#myForm').submit( function(){
$('#id_submit').focus();
} );
由于
答案 0 :(得分:3)
您可以使用jquery并劫持表单。
http://docs.jquery.com/Events/submit
<form id = "myForm">
</form>
$('#myForm').submit( function(){
do_something();
} );
这应该在调用该方法后提交表单。如果您需要更细粒度的控制,请在提交事件结束时抛出一个返回false,并使用$ .post()生成您自己的帖子请求;
答案 1 :(得分:2)
来自http://cross-browser.com/forums/viewtopic.php?id=123:
根据规范,按Enter键不是 应该解雇变革事件。该 控件发生更改事件 失去焦点,价值也发生了变化。
在IE中按Enter键聚焦 提交按钮 - 所以文本输入 失去焦点,这会导致变化 事件
在FF按下输入不对焦 提交按钮,但更改 事件仍然发生。
在Opera中,上述情况均未发生。
keydown
在浏览器中更加一致,可用于检测字段中的更改。
答案 2 :(得分:0)
我对Javascript并不擅长,但你可以这样做吗?
<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>