5

以下のクリックと送信の例について:

<form action="url" method="post">
<input type="text" id="input1"/>
<input type="submit" value="submit" onclick="testFun()"/>
</form>

ボタンをクリックして送信するときに、フォームの送信後に関数 testFun が実行される可能性がある場合

答えがノーの場合。なぜ?送信ボタンをクリックすると、ブラウザはどのように機能しますか?? 順番はクリック機能→送信?は正しい??

4

5 に答える 5

6

いいえ、フォームが送信された後に機能を実行することはできません。実行される順序は次のとおりです。

  • ユーザーが送信ボタンをクリックする
  • onclick関数が実行されます
  • urlブラウザは、フォームのアクションで指定された場所にページを送信します

falseonclick ハンドラーから戻ることで、ブラウザーがページを送信するのを防ぐことができます。

function myfunc() {
  // do some stuff
  return false;
}

次に、送信ボタンを次のように変更する必要があります。

<input type="submit" onclick="return myfunc()"/>

フォームが送信された後に関数を実行したい場合は、AJAX を使用してフォームを送信する必要があります。これにより、ブラウザがページから移動することはなく、フォームが送信された後に JavaScript 関数を実行できます。

于 2012-06-19T09:19:12.123 に答える
1

actionフォームがブラウザをその URL にリダイレクトするため、これは不可能です。

1 つのオプションはページで実行することtestFun()ですaction urlが、関数の機能によっては実行できない場合があります。

ここで実際にやろうとしていることについてさらに情報を投稿する場合は、役立つかもしれません。

于 2012-06-19T09:03:08.320 に答える
1

いいえ、しかしtestFun、フォームが送信されるまで実行されない別の非同期関数を (順番に) 呼び出す可能性があります (その時点では、ブラウザーがページを離れているため、フォームはまったく実行されません)。

于 2012-06-19T09:14:22.153 に答える
0

いいえ、それはできません。送信後、現在のページの範囲外になります。しかし、フォームの送信に iframe を使用し、親ページで関数を呼び出すと、うまくいくと思いました。

于 2012-06-19T09:04:31.147 に答える
0

答えは「ありえない」

どうして

ブラウザーが送信イベントをトリガーすると、ページとのすべてのユーザー操作が停止するためです。submit イベントがトリガーされた後、通信はブラウザーと Web サーバーの間で行われます。これがブラウザの設計方法です。

あなたの場合、ページにフォームがあり、そのフォームに type=button の入力があるため、フォーム送信が発生します。ページを送信したくない場合は、入力のタイプをボタンに変更できます。

このフィドルをチェックしてくださいhttp://jsfiddle.net/kiranvj/MBxNs/1/

于 2012-06-19T09:08:36.470 に答える