2016-07-01 13 views
-1

サーバー側の方法が機能し、AJAX関数がdata-duplicated="false"ではなく$this.submit();に設定されています。実際にフォームを送信するには、もう一度sumbitボタンを押す必要があります。AJAX関数でフォームを送信

<form data-url="/.../" data-duplicated="true" onsubmit="return checkForDuplicates(this)"> 
    <!-- Form inputs --> 
</form> 


function checkForDuplicates(e) { 
     var $this = $(e); 
     var url = $this.attr('data-url'); 

     if ($this.attr('data-duplicated') === 'true') { 

      $.ajax({ 
       url: url, 
       type: 'POST', 
       data: data, 
       success: function (result) { 
        if (result === true) { 
         $this.attr('data-duplicated', 'false'); 
         $this.submit(); 
        } else { 
         // warrning 
        } 
       } 
      }); 

      return false; 
     } 
     return true; 
    } 

私は実際にフォームを送信するために何をすべき?

+0

これを試してください: '$ this [0] .submit();' –

+0

'ajax'を使っているのなら、なぜ' form'を提出していますか? – Rayon

+0

@IsmailRBOUH - this [0] .smitは関数ではありません。 – Bacchus

答えて

-1

バッカス、私はコメントで説明したように、

$(document).ready(function(){ 
 
     $('#submit').on('click', function(){ 
 
     $.ajax({ 
 
       url: url, 
 
       type: 'POST', 
 
       data: data, 
 
       success: function (result) { 
 
        if(result == 'duplicate'){ 
 
        $('#form').submit(); 
 
        }else{ 
 
        //your custom message here 
 
        } 
 
       } 
 
      }); 
 
     }); 
 
});
<form id='form' action='' method='post'> 
 
    <!--your inputs here--> 
 
    <a id='submit'>Submit form</a> 
 
</form>

はそれがあなたのお役に立てば幸いです:あなたはこのような何かを行うことができます。

+0

提出前に重複チェックを行う必要があります –

+0

PHPを使用して送信時にチェックされます。なぜdownvote?これは完全に機能する解決策です。 – Ionut

+0

downvote投稿者は、 –

0

demo link

JavaScriptコード

$('input[type="submit"]').click(function(e) { 
    e.preventDefault(); 
    checkForDuplicates(this); 
}) 

function checkForDuplicates(e) { 
    var _form = $(e).closest('form'); 
    var url = _form.attr('data-url'); 

    if (_form.attr('data-duplicated') === 'true') { 
    var data = {}; 
    var url = '/'; 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     data: data, 
     success: function(result) { 
     if (result === true) { 
      _form.attr('data-duplicated', 'false'); 
      _form.trigger('submit'); 
     } else { 
      // warrning 
     } 
     } 
    }); 

    } 
} 

HTMLコード:

<form data-url="/.../" data-duplicated="true"> 
    <input type="submit"> 
</form> 
+0

コードは私のものとまったく同じですが、今のところ2回目に送信ボタンをクリックしてもフォームは送信されません(.trigger( 'submit')は動作しません)。 – Bacchus

+0

トリガーが動作する必要があります、あなたは何か間違っている。トリガーを_form.submit()に変更することはできますが、同じ –

+0

誰もがdownvotedをなぜ呼び出すのでしょうか? –

関連する問題