0

onchange = "do_something()"の入力要素があります。入力してEnterキーを押すと、FirefoxとChromium(IEとSafariではテストされていません)では正しく実行されますが(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();
} );

ありがとう

4

3 に答える 3

3

jquery を使用してフォームを乗っ取ることができます。

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

<form id = "myForm">

</form>

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

これは、そのメソッドを呼び出した後にフォームを送信する必要があります。よりきめ細かい制御が必要な場合は、submit イベントの最後に return false をスローし、$.post(); を使用して独自の投稿リクエストを作成します。

于 2009-07-30T20:46:09.167 に答える
2

http://cross-browser.com/forums/viewtopic.php?id=123から:

仕様によると、Enter キーを押しても、変更イベントが発生することは想定されていません。change イベントは、コントロールがフォーカスを失い、その値が変更されたときに発生します。

IE では、Enter キーを押すと送信ボタンがフォーカスされるため、テキスト入力がフォーカスを失い、これにより change イベントが発生します。

FF では、Enter キーを押しても送信ボタンがフォーカスされませんが、変更イベントは引き続き発生します。

Opera では、上記のいずれも発生しません。

keydownフィールドの変更を検出するためのブラウザー間での一貫性が向上します。

于 2009-07-31T00:31:02.003 に答える
0

Javascriptが苦手なのですが、こんなことはできませんか?

<form name="myform" action="." method="POST">
<input type="text" onchange="do_something();document.myform.submit();">
</form>
于 2009-07-30T20:44:22.090 に答える