0

フォームを送信するときに2つのアクションを同時に実行することは可能ですか?

これが私の例です:

<input type="checkbox" name="setM"  id="m"  value="1" onClick="this.form.submit();setM();" />

フォームを送信すると同時に関数を処理する別の方法はありますか?フォームを送信するときにいくつかのプロセスを実行し、その結果でsetMを処理します。だから私は提出するために最初になる必要があります。

編集

<script type="text/javascript">
function DoAllThese() {
    One();
    Two();
    Three();
    Four();}

この関数を呼び出すと、1つはsetM関数を実行し、2つは特定のフォームを送信しますか?

4

4 に答える 4

2

他の2人の男が非常に美しい方法で説明したように、私はまた、フォームを送信するためにajaxを使用することであなたがやりたいことが可能になると言います。

<form>


<button onclick="ajaxsubmit()">Submit</button>
</form>

あなたのajax:

function ajaxsubmit(){
   // do your other functions
$.ajax({
    // ajax send
 }).done(function(){
    // submitted successfully
 });
}
于 2013-01-17T21:02:49.547 に答える
2

AJAXを使用していない限り、実行した送信後の動作はページに影響を与えません。これは、ページがフォームの投稿の結果に置き換えられるためです。フォームの送信後にAJAXを使用すると、最良の場合でも、送信後のアクションの効果と、新しいページがロードされることを見越してページがアンロードされるまでの間に競合状態が発生します。

あなたの質問からあなたが何をしようとしているのかを判断することは実際には不可能なので、私はいくつかの一般的なガイドラインを与えるだけです。

  1. フォームを送信する前に、フォームの送信に影響を与える可能性のあるアクションを実行し、これらが完了してからフォームを送信してください。フォームの送信が機能の正常な完了を条件としている場合は、機能が失敗したときにデフォルトのアクション(フォームの送信)を防止するようにしてください。

  2. フォーム送信の結果に基づいて現在のページに影響を与えたい場合は、AJAXを使用し、AJAX成功コールバックで実行されているフォーム投稿に依存する関数を使用してJavaScriptを介してフォーム送信を完全に処理します(または、 'AJAXを手動で処理しています)。

  3. マークアップで動作を適用するのではなく、JavaScriptを使用して要素にハンドラーをアタッチします。これにより、動作がドキュメント全体に分散するのではなく、コード内でローカライズされるため、JavaScriptコードを理解しやすくなります。

于 2013-01-17T20:52:58.447 に答える
1

フォームを送信すると、ブラウザはページを離れます。したがって、おそらく、説明する「プロセス」はサーバー側のものです。

ブラウザが残したページのイベントハンドラから次のページでJavaScriptを実行させることはできません。

次のいずれかを行う必要があります。

  • XMLHttpRequest(Ajax)でデータを送信する
  • 次のページに、実行するJSを含めます
于 2013-01-17T17:33:27.957 に答える
1

HTML

<form name="myform" action="test.html" onsubmit="verify()">
    <!-- FIELDS -->
</form>

Javascript

function verify()
{
    One();
    Two();
    Three();
}
于 2013-01-17T18:22:36.450 に答える