onsubmit-Methode nicht aufhören zu senden
Meine onsubmit
funktioniert nicht. Meine Idee war es, einige Pflichtfelder und, um das zu erreichen, ich war mit der onsubmit
- Methode in einem Formular in HTML, das eine JavaScript-Funktion aufgerufen.
Die Idee war, wenn alle obligatorischen Felder ausgefüllt wurden, wird die javascript-Funktion return true
und es würde auf Seite /control/Cadastro.php
. Andernfalls, wenn ein Pflichtfeld leer war, würde es wieder false
und es wollte sich nicht bewegen zu Seite /control/Cadastro.php
, bleiben in der aktuellen Seite, bis true.
Leider, die Funktion gibt zurück false
wenn alle obligatorischen Felder sind nicht gefüllt, wie erwartet, aber es bewegt sich immernoch zur Seite /control/Cadastro.php
, auch wenn es nicht sollte.
Werde ich abgeschnitten einige code, um meine Sicht wahrnehmbar.
<!DOCTYPE html>
<html>
<head>
<script>
function ValidateRequiredFields()
{
var message = new String('\nCampos obrigatórios:\n');
var flag=new Boolean(1);
var x=document.forms["theForm"]["nr_processoCA"].value;
if (x==null || x==""){
message += '\nNº do processo\n';
flag = new Boolean(0);
}
if (flag == false){
alert(message);
}
return flag;
}
</script>
</head>
<body>
<form name="theForm" onsubmit="return ValidateRequiredFields()" method="post" action="../control/Cadastro.php">
Nº do Processo: <br>
<input type="text" name="nr_processoCA" class="input-xlarge">
<br>
<div class="row-fluid" style="text-align:center;">
<input type="submit" class="btn btn-primary btn-large" value="Gravar">
</div>
</form>
</body>
</html>
- Nicht so ausführlich schreiben Sie einfach
var flag = true
oderflag = false
, idem fürString
🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
preventDefault
in Ihrem onsubmit-Funktion. Ich veränderte den code:DEMO
Diese Arbeit zu machen, Ihre
ValidateRequiredFields
Funktion muss einen booleschen Wert zurückgeben. Und dann sollte man anfügen, dass die Methode deronSubmit
Veranstaltung. Denken Sie daran, dass füronsubmit
müssen Sie diereturn
Schlüsselwort.Dieser Beispielcode funktioniert:
schlage ich vor, um eine Taste, die das Formular ausführen, wenn wahr:
das ist alles....
<input type="submit">
ist so gemacht, ohne irgendwelche aufdringliche js. Wenn es irgendwelche Fehler in den Validierungs-Funktion, bewegen Sie es um, lösen nicht das Problem.Eines Objekts wird immer zu true ausgewertet werden, auch wenn es ein Boolean-Objekt mit dem Wert false.
Setzen
flag = true
an den Anfang der Funktion, dannflag = false
erstellen, anstatt einen booleschen Wert.Ich hatte ein ähnliches problem. Es stellte sich heraus, es war ein Fehler in meinem Validierung (geschachtelte einige Funktionen tief), verursacht JavaScript beenden Sie die Ausführung der Funktion vor erreichen einer return-Anweisung. An welcher Stelle würde es einfach weiter, mit dem senden.
Ich empfehlen, jemand zu finden diese Seite auf der Suche nach einer Antwort auf "onsubmit-Methode nicht zu stoppen abschicken" wird Schritt für Schritt durch den Validierungs-Funktion mit einem feinen Kamm zahn.
Nach der Suche rund um für eine Antwort, die für mich gearbeitet habe ich beschlossen, nur eine Lösung erstellen. Der folgende code ermöglicht die native HTML5 Formular-Validierung ausführen, bevor die übermittlung oder Ausführung einer anderen Funktion (getestet im Chrome). Stellen Sie sicher, dass Sie false zurück, nachdem die Funktion zu verhindern, dass das Formular versendet.
HTML: