9

SO 何らかの理由で、ボタンを 1 回押すだけでフォームが 2 回送信されます。jquery Formプラグインを使用するのはこれが初めてで、jqueryが一度送信され、フォームも「自然に」送信されると思います。解決策は、フォームの onSubmit イベント ハンドラに「return false」を追加することです。私はそれをやっていると思っていましたが、明らかに機能していません。

誰でも助けることができますか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>User form entry </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="jquery.validate.js"></script>
<script src="jquery.passwordStrength.js"></script>
<script src="jquery.form.js"></script>
<script>

$(document).ready(function() {
    $('#signupForm').ajaxForm(function() { 
         var queryString = $('#signupForm').formSerialize(); 
         $.post('process.php', queryString);
    });
});
</script>
</head>
<body>
   <form id="signupForm" action="process.php" onsubmit="return false" method="post">
   <fieldset class="password">
          ... form goes here
   <button type="submit" name="formSubmit" value="submit">Click to submit</button>
   </form>

<div id="results"></div>

</body>
</html>

フォーム要素に onsubmit="return false" を追加しようとしましたが、送信がまったくありません。「return false;」も追加してみました。jQuery に追加しますが、それでも二重提出があります。私は何が欠けていますか?これは、jQuery Form Plugin サイトによると標準的な方法論のようです..私のフォームはどう違うのですか?

(ちなみに、念のために言っておきます。ボタンを繰り返し押して複数のフォームが連続して送信されるという問題について話しているのではありません。私の問題は「送信ボタンを 1 回押す = 送信 2 回」です。)

4

4 に答える 4

20
$('#signupForm').ajaxForm(function() { 
            var queryString = $('#signupForm').formSerialize(); 
            $.post('process.php', queryString);

});

これは2回送信しています....ajaxFormメソッドを1回、次にpost()2回送信します

ajaxFormメソッドはフォームの送信を処理します...メソッドを追加する必要はありません...内部post()の関数ajaxFormはコールバックであり、成功時に実行されます...

$('#signupForm').ajaxForm(function() { 
       alert("Thank you for your comment!"); 
});

このコードは、投稿が成功した後にアラートを表示します...簡単な例はこちら-> http://jquery.malsup.com/form/

onsubmitまた、フォームから属性を削除する必要があります...

アップデート

結果を表示したい場合は...次のようにします:

$(document).ready(function() { 
    $('#signupForm').ajaxForm({ target: '#results' }); 
    // this will output the responseText from the submitted form to the target DOM element
});
于 2012-02-16T15:11:29.703 に答える
0

使用を避ける

<button type="submit" name="formSubmit" value="submit">

当然、送信ボタンは1つの送信を行い、jqueryは別の送信を行います

これを使って

<input type="button" name="formSubmit" value="submit">
于 2012-02-16T15:13:29.143 に答える
0

これを使用してみてください:

onsubmit="void(0);"
于 2012-02-16T15:18:58.670 に答える
-1

ボタンを使用しないでくださいsubmit。通常のボタンを使用します。

于 2012-02-16T15:11:44.580 に答える