2017-05-11 4 views
-1

Wenn ich einen Handler für ein Formular senden Ereignis hinzufügen, wird es ausgelöst, bevor JQuery Validierung erfolgt ist. Wenn die Validierung fehlschlägt, wird das Formular nicht an den Server gesendet. Somit ist die Veranstaltung eher ein "Einreichen" als ein "Einreichen".Formular senden Ereignis

Mit welchem ​​Ereignis kann ich umgehen, wenn der Post tatsächlich zum Übermitteln des Formulars gesendet wird?

+1

http://stackoverflow.com/questions/374644/how-do-i-capture-response-of-form-submit –

+0

Afaik ist es wirklich Ereignis absenden. Die jquery-Validierung verhindert einfach das Übergeben des Ereignisses, wenn die Validierung fehlschlägt (z. B. mit return false). – yezzz

+1

Die Frage scheint auf einer falschen Prämisse zu beruhen. Das Formularübergabeereignis sollte den jQuery-Überprüfungscode aufrufen. Der Validierungscode kann dann 'false' zurückgeben oder' event.preventDefault() 'aufrufen, wenn verhindert werden soll, dass das Formular gesendet wird. – Barmar

Antwort

0

Ihre Frage ist ein wenig verwirrend, also werde ich versuchen, die beiden Möglichkeiten, ein Formular zu senden, anhand von Beispielen zu erklären.

Im ersten Beispiel ist die Form:

Validate durch die Funktion

validate() 

durch die Funktion

$("#myform").submit() 

$('#press').on('click', function(e){ 
 
\t \t e.preventDefault(); 
 
    var val = validate(); 
 
    if(val == true){ 
 
    var r = confirm("Submit form!") 
 
    var txt; 
 
    if (r == true) { 
 
    txt = "You pressed OK!"; 
 
    //$("#myform").submit(); //use this for submitting the form 
 
} else { 
 
    txt = "You pressed Cancel!"; 
 
} 
 
    alert(txt); //this line of code for test reasons 
 
    } 
 
    else{ 
 
    alert("input fields empty"); 
 
    } 
 
}); 
 

 

 
function validate(){ 
 
    var val = true; 
 
    var teste1 = $("#input1").val(); 
 
    var teste2 = $("#input2").val(); 
 
    if(teste1== "" || teste1 == null){ 
 
     var val = false; 
 
     //some css and jquery to change the input color 
 
    } 
 
    if(teste2 == "" || teste2 == null){ 
 
     var val = false; 
 
     //some css and jquery to change the input color 
 
    } 
 
    return val; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id = "myform" action="test.php" method="post">  
 
<input type = "text" id ="input1" value = ""> 
 
<input type = "text" id ="input2" value = ""> 
 
<button id = "press" type="button">Click Me!</button> 
 
</form>

Submitted

Diese Art der Übermittlung aktualisiert die Seite. Damit die Seite nicht aktualisiert wird, müssen Sie Ajax verwenden. In Ihrer Trigger-Funktion müssen Sie $("#myform").submit(); ersetzen.

var teste1 = $("#input1").val(); 
var teste2 = $("#input2").val(); 
$.ajax({ 
    method: "POST", 
    url: "test.php", 
    datatype:"Json", 
    data:{ 
     "data1": teste1, 
     "data2": teste2 
     }, 
    success: function(result){ 
    alert("result"); 
    } 
}); 

Auf diese Weise senden Sie die Daten in einem JSON-Array. Auf diese Weise können Sie Server-Feedback über die Erfolgsfunktion erhalten.

+1

Beantworten Sie keine verwirrenden Fragen: Fragen Sie nach Erläuterungen durch Kommentare und finden Sie eine Antwort auf die geklärte Frage. – FrankerZ

Verwandte Themen