Nicht aktiviert Kontrollkästchen null-Wert zurückgeben
Habe ich eine Reihe von Kontrollkästchen, die, wenn aktiviert, übergeben Sie den Wert 1, ansonsten übergeben Sie den Wert 0. Jedoch, anstatt den Wert der nicht angehackte Checkboxen werden als '0', der Wert gesendet wird, ist 'NULL'.
Habe ich den folgenden JS code in Ort, sollte der Wert 0/1 entsprechend, aber immer noch der Wert gesendet wird, als NULL. Gibt es etwas, das getan werden kann, um sicherzustellen, dass der Wert übergeben, der im Falle einer unchecked checkbox 0 ist?
$('#cb1, #cb2, #cb3, #cb4').on('click', function ()
$(this).val(this.checked ? 1 : 0);
});
AKTUALISIERT
Hier ist mein html:
<input type="checkbox" name="cb1" id="cb1" value="1" checked />
<input type="checkbox" name="cb2" id="cb2" value="1" checked />
<input type="checkbox" name="cb3" id="cb3" value="1" checked />
<input type="checkbox" name="cb4" id="cb4" value="1" checked />
Sind Sie alle standardmäßig aktiviert.
Wenn einer von Ihnen deaktiviert ist, MySQL meldet folgenden Fehler:
0SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ColumnName' darf nicht null sein.
Dies ist, weil die Spalten werden festgelegt set nicht Null sein. Und auch wenn ich den Standardwert auf 0, sobald ich auf den submit-button, ich bekomme immer noch den Fehler. Ich versucht zu entfernen, die not NULL-Eigenschaft jedoch eher als prefilling den Wert 0, war der Eingang NULL in der Datenbank.
- Konnte Sie auch Ihre html?
- Sollten Sie Ihr HTML so:
<input type="hidden" name="cb1" value="0" /><input type="checkbox" name="cb1" id="cb1" value="1" checked />
. - dies sollte funktionieren, aber Sie werden fehlen ein
{
in javascript... hier ist ein fiddle: jsfiddle.net/5vS3S
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein Kontrollkästchen nicht markiert ist, ist es nicht geschickt bekommen, so eine Einstellung ist-Wert 0, wenn es nicht geprüft ist nicht zu helfen - es wird immer NULL zurückgegeben.
Gibt es zwei Wege, dies zu beheben einfach:
1) Annehmen, die eine NULL in der PHP params bedeutet, dass die checkbox nicht aktiviert ist. Wenn die checkbox nicht immer auf der Seite vorhanden sind, könnte dies problematisch sein. Von den Klängen der es, es ist eine variable Anzahl von Checkboxen, so dass dies wahrscheinlich nicht funktionieren.
2) Fügen Sie ein hidden-input, der den gleichen Namen wie die checkbox mit dem Wert 0 VOR die checkbox. Wenn das Kontrollkästchen deaktiviert ist, wird das versteckte Feld Wert wird verwendet, wenn es aktiviert ist das Kontrollkästchen Wert verwendet.
Hinweis: Wenn Sie Ihre Namen sind in einem array bilden (dh Sie haben die eckigen Klammern in Ihnen), diese arbeiten nicht, wie die versteckten Felder erhöht die array-Zählung als gut.
ÄNDERN SIE IHR SKRIPT WIE DIESES. HOFFE, ES HILFT.
Mit jQuery können Sie mit der überprüft Selektor, um den Zustand einer checkbox. Wenn es aktiviert ist, wird die Länge enthält etwas, das größer als 0, e.G.:
So brauchen Sie nicht, um den Wert des checkbox-Elements auf 0...
Ist, weil, wenn Sie de-das Kennzeichen, ist der Wert null, weil es keinen Wert mehr hat. Überprüfen Sie dieses Beispiel aus w3cschools:
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_checkbox
Wenn Sie haben nichts ausgewählt, wird der Wert nicht übermittelt. Aber wenn Sie etwas, dessen Wert wird nachgereicht.
Wenn Sie wirklich wollen, true/false-Wert, müssen Sie einen trick anwenden.. so senden Sie den Zustand der geprüften Attribut wird den trick tun.
Können Sie versuchen, diese , vielleicht hilft es Euch. Angenommen, Ihre form ist wie folgt:
Nun haben Sie Ihre codeigniter-controller wie diesem: