我有一个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();
} );

由于

有帮助吗?

解决方案

您可以使用jquery并劫持表单。

http://docs.jquery.com/Events/submit

<form id = "myForm">

</form>

   $('#myForm').submit( function(){
   do_something();
   } );

这应该在调用该方法后提交表单。如果您需要更细粒度的控制,请在提交事件结束时抛出一个返回false,并使用$ .post()生成您自己的帖子请求;

其他提示

来自 http://cross-browser.com/forums/viewtopic。 ?PHP的ID = 123

  

根据规范,按Enter键不是   应该解雇变革事件。该   控件发生更改事件   失去焦点,价值也发生了变化。

     

在IE中按Enter键聚焦   提交按钮 - 所以文本输入   失去焦点,这会导致变化   事件

     

在FF按下输入不对焦   提交按钮,但更改   事件仍然发生。

     

在Opera中,上述情况均未发生。

keydown 在浏览器中更加一致,可用于检测字段中的更改。

我对Javascript并不擅长,但你可以这样做吗?

<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top