提出前に何かする方法は?[閉まっている]


141

フォームを送信するボタンがあるフォームがあります。送信が行われる前に何かをする必要があります。そのボタンでonClickを試してみましたが、送信後に発生します。

コードを共有できませんが、一般的に、jQueryまたはJSでこれを処理するにはどうすればよいですか?



2
@Brad Christie私が回答としてコメントを受け入れることができた場合のみ。とても役に立ちました。
ジミー

3
スタックオーバーが質問を閉じるとき、私はそれを嫌います。あなただけのフォームを提出する前に、次のイベント次のタイミングでその火を使用してアクションを処理することができます:1 - 2 -のonmouseoverれるonmousemove、3-れるonmousedown、4-、5- ONFOCUS onMouseUpの5,6のonclick 7をonSubmit
シャディNamrouti

1
最近、同じ問題に遭遇したので、この質問に感謝します。この質問は、まさに私が尋ねたかったものです。
-wastetime909

2
この質問は本当の質問ではないため、閉じられたのはおかしいです:-?
AnnaKlein

回答:


207

そのようなフォームがある場合:

<form id="myform">
...
</form>

次のjQueryコードを使用して、フォームが送信される前に何かを行うことができます。

$('#myform').submit(function() {
    // DO STUFF...
    return true; // return false to cancel form action
});

2
送信前に完了する必要のあるこのforループの使用に問題があります。助言がありますか?
スミリャン2013年

確認するコードがありますか?問題がよくわかりません。
ダン・ブリーン

3
なぜこれが空の関数呼び出しにラップされているのですか?submit関数$('#form')は、周囲の空の関数なしでに直接バインドできませんか?編集:ドキュメントは、周囲の関数呼び出しは不要であることを示唆しています
eykanal

@eykanal良い点。関数ラッパーを削除しても問題なく動作することを確認した後、関数ラッパーを削除するように回答を編集しました。
Jon Schneider

3
@eykanal「空の」関数呼び出しを使用しました。$(document).ready()これはjQueryの関数の省略形であるため、submitイベントをアタッチする前にDOMが完全であることを確認するためです。JSがページの下部にある場合は必要ありませんが、<head>セクションにある場合は必要です。参照:stackoverflow.com/q/13062246/135108
Dan Breen

23

次のようなフォームがあるとします。

<form id="myForm" action="foo.php" method="post">
   <input type="text" value="" />
   <input type="submit" value="submit form" />

</form>

次のonsubmitようにjQueryで-eventをアタッチできます。

$('#myForm').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});

あなたがいる場合return false、フォームが機能した後に提出されることはありませんあなたはtrueを返していないか、何もあれば、それはいつものように提出します。

詳細については、jQueryのドキュメントを参照してください。


11

を使用onclickして、次のようにフォームを送信する前に、JavaScriptまたはjQueryコードを実行できます。

<script type="text/javascript">
    beforeSubmit = function(){
        if (1 == 1){
            //your before submit logic
        }        
        $("#formid").submit();            
    }
</script>
<input type="button" value="Click" onclick="beforeSubmit();" />

18
しかし、これは機能しません。たとえば、フォームに入力フィールドが含まれている場合、ユーザーは、送信イベントを発生させるReturnキーを押します。通常は、submitイベントに直接アタッチすることをお勧めします。これにより、ユーザーが送信をどのように起動したかに関係なく、確実に呼び出されるようになります。
acme

2
<input type = "submit" value = "Click" onmouseover = "beforeSubmit();" />
Ansyori 2013年

5

送信ボタンのタイプが「送信」ではないことを確認して、ボタンにしてください。次に、onclickイベントを使用してJavaScriptをトリガーします。そこで実際にデータを投稿する前に、好きなことができます。


3
フォームは、特定のフィールドでEnterキーを押すなど、さまざまな方法で送信できます。クリックされない可能性がある1つのボタンのクリックにバインドすることはお勧めできません。他の回答onsubmitは、フォームのバインド方法を示しています。フォームの送信方法に関係なく、フォームが起動します。
Jason
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.