前提・実現したいこと
form送信前にAJAXで入力内容をチェックし問題がなければそのまま送信したい。
内容変更と新規登録をボタンで切り分けしているため.submit()ではなくclickイベントを使用しています。
発生している問題・エラーメッセージ
1回目のclickでformが送信されない。
2回目以降は普通に送信されます。
該当のソースコード
HTML
1<form action="edit2.php" method="post" id="myForm"> 2いろいろフォームの内容 3 4<input type="submit" name="update" value="内容変更" class="check" /><br> 5<input type="submit" name="insert" value="新規登録" class="check" /> 6</form>
jQuery
1$('.check').off('click'); 2$('.check').on('click',function(){ 3 var form = $("#myForm"); 4 form.submit(function(e) { 5 e.preventDefault(); //送信STOP 6 }); 7 8 $('.err').remove(); 9 var _this = $(this), 10 mode = _this.attr('name'), 11 datas = form.serialize(); 12 _this.val('チェック中'); 13 $.ajax({ 14 type: "POST", 15 cache: false, 16 url: "check.php", 17 data: { mode : mode, datas : datas }, 18 dataType:"json" 19 }).done(function(datas) { 20 if(datas['err']){ 21 $.each(datas.err,function(key, item){ 22 $('*[name="'+key+'"]').after('<span class="err"> '+item+'</span>'); 23 }); 24 _this.val('エラーあり'); 25 } else { 26 _this.val('OK'); 27 form.off('submit'); 28 form.submit(mode); 29 } 30 }); 31});
試したこと
どこまで進んでいるのかわからなかったのでボタンのvalueを書き換えてみたところ
きちんと「OK」になるのですが1回目のクリックではform.submit(mode);が動きません。
form.off('submit');の動きなどはあまりきちんとわかっていないためなぜ送られないのかがよくわかりません。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー