HTMLSchaltfläche Senden nicht mit Anfrage gesendet wird, wenn über JavaScript
<form method='POST' id='signup_form'>
<label for='email'>E-mail:</label><br />
<input type='email' name='email' /><br /><br />
<label for='username'>Username:</label><br />
<input type='text' name='username' /><br /><br />
<label for='password'>Password:</label><br />
<input type='password' name='password' /><br /><br />
<label for='confirmpassword'>Confirm Password:</label><br />
<input type='password' name='confirmpassword' /><br /><br />
<input type='submit' name='signup' />
</form>
JavaScript
const signup_form = document.getElementById('signup_form');
signup_form.addEventListener('submit', function() {
event.preventDefault();
let missing_input = false;
for (let i = 0; i < this.children.length; i++) {
if (this.children[i].type !== undefined && this.children[i].type !== 'submit')
if (this.children[i].value === '') {
missing_input = true;
break;
}
}
if (!missing_input)
this.submit();
});
einreichen
Also ich versuche, einige Validierung in meinem JavaScript zu tun, bevor ich meine Form zu PHP einreichen. Wenn der Benutzer versucht, das Formular zu senden, überprüfe ich die Eingaben, um zu sehen, ob sie leer sind und wenn einer von ihnen dann bin, übermittle ich das Formular nicht. Diese Funktionalität funktioniert einwandfrei, aber wenn das Formular übermittelt wird, wird <input type='submit' name='signup' />
nicht in _POST
angezeigt. Alle anderen Eingaben tun es. Es funktionierte gut, bevor ich den Event-Listener implementierte.
Dies ist, was $_POST
wie nach aussieht erfolgreich einreichen:
Array ([email] => [email protected] [username] => ericsartor [password] => asdasdasd [confirmpassword] => asdasdasd)
ich etwas falsch gemacht? Es funktioniert definitiv gut, wenn ich den Ereignis-Listener entferne, aber ich verstehe nicht, warum, wenn das Verhindern der Übermittlungsschaltfläche in der Anfrage enthalten ist ...
EDIT: Ich fand die Lösung dank eines Links, den Andre gepostet hat. Ich habe meine eigene Antwort geschrieben, aber ich kann sie noch nicht akzeptieren.
es gibt keinen "Wert" zu "submit", was vielleicht der Grund ist! Versuchen Sie es mit '' etc – RamRaider
Ich habe versucht, einen Wert hinzuzufügen, es hat keinen Unterschied gemacht. In der Tat, wenn ich den Event-Listener entferne und das Formular wie normal übertrage, weist PHP einen Vorschlagswert von "Submit" zu, um Elemente zu übermitteln, wie es scheint. Ich habe 'if (isset ($ _ POST ['signup']))' 'verwendet, um nach dem Senden von Formularen zu suchen, und das funktioniert ohne einen expliziten Wert! –