2016-07-01 12 views
-1

Die serverseitigen Methoden funktionieren, und die AJAX-Funktion setzt data-duplicated="false" aber $this.submit(); funktioniert nicht. Um das Formular tatsächlich zu senden, muss ich den "summit" -Button erneut drücken.Ein Formular in einer AJAX-Funktion senden

<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; 
    } 

Was soll ich tun, um tatsächlich das Formular abschicken?

+0

Versuchen Sie dies: '$ this [0] .submit();' –

+0

Wenn Sie 'Ajax' verwenden, warum reichen Sie' Form' ein? – Rayon

+0

@ IsmailRBOUH - das [0] .submit ist keine Funktion. – Bacchus

Antwort

-1

Bacchus, wie ich in den Kommentaren erklärt, so etwas tun können:

$(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>

Hoffe, dass es Ihnen hilft.

+0

doppelte Prüfung sollte vor dem Einreichen sein –

+0

würde überprüft werden, um mit PHP einreichen. Warum der Downvote? Dies ist eine perfekt funktionierende Lösung. – Ionut

+0

downvote, weil Autor überprüfen möchten, vor Vorlage duplizieren –

0

demo link

JavaScript-Code

$('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-Code:

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

Der Code funktioniert genau das gleiche wie meins aber jetzt Das Formular wird nicht abgeschickt, auch wenn ich zum zweiten Mal auf den Absenden-Button klicke (ich vermute, dass .trigger ('submit') nicht funktioniert). – Bacchus

+0

Trigger sollte funktionieren, tun Sie etwas falsch. Sie können Trigger zu _form.submit() ändern, aber es ist –

+0

jemand Anruf sagen, warum downvoted? –