Ich versuche, meinem HTML-Formular ein Skript hinzuzufügen, das alle nicht aktivierten Kontrollkästchen entfernt und sie durch ein verstecktes Feld und den Wert "Nein" ersetzt. Wenn Checkboxen aktiviert sind, werden sie den Wert "Ja" anzeigen.Warum funktioniert mein Formularskript nur bei der zweiten Übermittlung?
Bitte beachten Sie, dass ich dieses versteckte Feld in das Formular nicht hinzufügen kann, weil die Seite, die ich es Host auf nicht zwei Formularfelder mit dem gleichen Namen erlauben, wie ich schon vorgeschlagen gesehen habe: Post the checkboxes that are unchecked
Für einig Der Grund dafür ist, dass das Skript nur funktioniert, wenn ich die Seite lade, das Formular mit allen Kontrollkästchen unmarkiert abschicke und dann das Formular erneut absende. Wenn ich die Seite neu lade, muss ich dasselbe noch einmal machen. Dies zeigt, was ich beziehe: https://gfycat.com/HarshWaterloggedKestrel
Liegt es daran, dass ich den Ereignis-Listener nach der ersten Formularübergabe hinzufügen?
Hier ist eine Geige mit Beispielcode: https://jsfiddle.net/gvd1jr0o/6/
Hier mein Skript ist:
$("#foo").submit(
function() {
var formEl = $(this);//get the reference of the form
debugger;
// Add an event listener on #foo submit action...
// For each unchecked checkbox on the form...
formEl.find("input:checkbox:not(:checked)").each(
// Create a hidden field with the same name as the checkbox and a value of 0
// You could just as easily use "off", "false", or whatever you want to get
// when the checkbox is empty.
function(index) {
var input = $("<input>");
input.attr('type', 'hidden');
input.attr('name', $(this).attr("name")); // Same name as the checkbox
input.attr('value', "no"); // or 'off', 'false', 'no', whatever
// append it to the form the checkbox is in just as it's being submitted
formEl.append(input); //$("#foo") is referring to the form
} // end function inside each()
); // end each() argument list
return true; // Don't abort the form submit
} // end function inside submit()
);
Ihre Geige sendet das Formular beim ersten Mal klicken. Bin ich etwas fehlt. –
Das Formular wird gesendet, aber der Wert für nicht markierte Kontrollkästchen sollte bei der ersten Formularübermittlung "Nein" sein. Das tut es nicht. War mir nicht sicher, wie ich das durch die Geige zeigen sollte. Also, ich habe nur Geige verwendet, um einfache Form mit Skript – cgrouge
Ich sehe immer noch die Werte "Nein" in der Netzwerk-Registerkarte angezeigt .. Aber nur Unterschied ist die innere Funktion wird nur am zweiten Mal der Einreichung ausgeführt .. –