私はどのボタンが押されたかに応じてフォームを投稿するためにjQueryを使用しています。 フォームが2回転記されていることをFirebugコンソールで確認できます。誰がなぜこれが起こっているのか教えてもらえますか?あなたが2人の提出するイベントリスナーと無症状を持っているのでhttp://jsbin.com/luvenaxela/edit?html,js,outputなぜjQueryは自分のフォームを2回投稿しますか?
-1
A
答えて
2
あなたのフォームに送信されたボタンを確認する。
1つの送信イベントリスナー(1つのAJAXリクエストが確実に発生し、コードの重複が少なくなるように)を変更し、送信されたボタンを確認する条件を追加することをお勧めします。以下のような
何か:
$(document).ready(function() {
$("#myForm").submit(function(e) { //If add btn pressed
e.preventDefault();
var id = this.id;
var url = "process_ajax4.php";
// Get the button name
var button = $(this).find("button[clicked=true]").attr('name');
var formdata = $(this).serialize();
switch(button){
case "btn_add":
formdata += "&btn=btn_add";
break;
case "btn_remove":
formdata += "&btn=btn_remove";
break;
}
$.post(url, formdata,
function(data) {
$("#results").html(data); //Response
});
});
4
:あなたは、2つのハンドラと同じことを行う
デモの両方を提出する必要があるためにです
$(document).ready(function() {
$("#myForm").submit(function(e) { //If add btn pressed
e.preventDefault();
var id = this.id;
var url = "process_ajax4.php";
var formdata = $(this).serialize();
formdata += "&btn=btn_add"; // added the btn
$.post(url, formdata,
function(data) {
$("#results").html(data); //Response
});
});
$("#myForm").submit(function(e) { //If add btn pressed
e.preventDefault();
var id = this.id;
var url = "process_ajax4.php";
var formdata = $(this).serialize();
formdata += "&btn=btn_remove"; // added the btn
$.post(url, formdata,
function(data) {
$("#results").html(data); //Response
});
});
});
フォーム
<td>
<form id="myForm" class="myForm" action="\" method= "post" enctype="multipart/form-data">
<input type="hidden" name="user_id" value=". $collab_userid." />
<input type="hidden" name="id" value=".$upload_id." />
<button type="submit" id="btn_remove" class="btn_remove" name= "btn_remove">Remove</button>
<button id="btn_add" class= "btn_add" name="btn_add">Approve</button>
</form>
</td>
1
$(document).ready(function() {
$("#myForm button[type=button]").on('click',function(e) { //If btn pressed
e.preventDefault();
var type = $(this).attr('name');
if(type == 'btn_remove'){
// Action on Remove button
}else if(type == 'btn_add'){
// Action on add button
}
});
});
は、2つのハンドラを提出しなければならないのはなぜこの
関連する問題
- 1. jQuery投稿フォーム2回
- 2. なぜjQuery ajaxはここに2回投稿しますか?
- 3. Django/Jqueryフォーム投稿
- 4. 投稿/リダイレクト/自分宛てに投稿するフォームを取得する
- 5. AJAXが2回目の投稿に投稿する投稿
- 6. フォームに投稿するためにモーダルボタンを2回クリックする必要があるのはなぜですか?
- 7. ASP.NET jQuery Ajaxの投稿フォーム
- 8. 自動フォーム投稿データ
- 9. AJAX投稿を2回
- 10. Facebookページを自分のページとして投稿しますか?
- 11. 高度なJQueryフォームの投稿
- 12. Jquery Ajaxフォームが必要です2投稿するには
- 13. 投稿フォームの入力値を投稿角度2にする
- 14. jQueryフォームは、投稿時に空白のページを返します
- 15. 私のコードが自分のデータベースからデータを投稿していないのはなぜですか?
- 16. フォームの投稿からの投稿
- 17. Rails単純なフォームのajax投稿:なぜGETリクエストですか?
- 18. フォーム投稿がJqueryとAjaxを使用してサブミットした後に2回動作しない
- 19. CGIからの投稿投稿フォーム
- 20. iframeフォームを投稿しますか?
- 21. 自分のブログの投稿を取得
- 22. jqueryで投稿フォームを作成する
- 23. jQuery iframeモーダル閉じるフォームに部分的に投稿する
- 24. 自動投稿フォームにはフォーム変数がありません
- 25. フォームが正しいコントローラアクションに投稿されないのはなぜですか?
- 26. フォームが正しく投稿されないのはなぜですか?
- 27. TYPO3連絡先フォームのプラグインが2回存在し、2回も投稿されました
- 28. 動的選択フォームの自動投稿
- 29. フォーム投稿投稿者
- 30. HTMLフォーム投稿とPHPフォーム投稿
を試してみてください? –
2つの '$("#myForm ")。submit'がバグの原因です。 –
@ Ali7091多くの状況でこれを行うのが良い方法ですが、この場合、コード 'e.preventDefault()'はデフォルトの送信アクションをすでに妨げているため、違いはありません。重複したイベントハンドラが問題の原因です。 – ADyson