0
<form id="formReg" action="reg.php" method="post">
. . . 
<button id="sub">Register</button>
</form>

これは機能しますが、ボタンを#subフォームタグの外側に配置し、jquery を使用してフォーム処理を実行したい:

$("#sub").click( function() {
    $.post( $("#formReg").attr("action")),
    $("#formReg :input").serializeArray();      
});

うまくいきません。まったく可能ですか?

4

4 に答える 4

1

(あなたが言ったように)ボタンを外側に配置して、これだけを呼び出さないのはなぜですか:

$("#formReg").submit();

ところで:これを使用してイベントをバインドする必要があります

$("#sub").on("click", function(){
... your code ...
});
于 2013-01-12T17:44:22.243 に答える
1

フォームの送信によってそれ以降のイベント リスナーの呼び出しがキャンセルされるため、おそらく機能しません。次のようなフォーム処理を行う必要があります。

$("#formReg").on('submit', function() {
    // process form
    // You can even stop the form submission here,
    // just return 'false' and it will stop.
    // That's very useful for form validation etc.
});

フォームを送信するためにそのボタンが必要な場合は、次のようにすることができます。

$("#sub").on('click', function() {
    $("#sub").submit(); // This will submit the form AND call the event listener. Nice, eh?
});

これは、ボタンがページ上のどこにあっても機能するはずです。

編集:
fibreFoX さん、廃止予定の.click()andを思い出してくれてありがとう.submit()!

編集 2:
Musa は正しいです$.post()。間違って使用しました。しかし、ユーザーがフォーム送信によってページからスローされた場合、AJAX 要求が実際に完了するかどうかはわかりません。フォームが送信されたページにユーザーを移動させたくない場合は、送信リスナーから false を返す必要があります。

于 2013-01-12T17:45:08.563 に答える
1

ajax 経由でフォームを投稿しようとしている場合は、$.postを間違って使用しています

$("#sub").click( function() {
    $.post($("#formReg").attr("action"), $("#formReg").serialize());    
});
于 2013-01-12T17:45:11.013 に答える
1

これを試して

$("#sub").click( function() {
    $.post( $("#formReg").attr("action"), $("#formReg").serialize());
});

serialize メソッドの後にセミコロンを削除し、フォーム要素で serialize() を呼び出していることに注意してください。これは、Ajax を使用して実行する場合です。

フォームを送信するだけの場合は、これを使用してください

$("#sub").click( function() {
    $("#formReg").submit();      
});
于 2013-01-12T17:45:39.383 に答える