So aktivieren oder deaktivieren Sie die Kontrollkästchen basierend auf ein click-Ereignis?
Habe ich eine web-app (PHP), und ich habe, dies zu ändern. Ich bin eher ein Datenbank, scripting guy, bitte tragen mit mir auf diesen einen!
Ich habe 8 Kästchen (glaube, nummeriert von 1~8) in eine form. Ich habe zu implementieren, die ein Zustand, wo sich in :
If one of the first 4 checkboxes are checked (only one checkbox can be checked in the first 4), Then the next 4 checkboxes should be disabled Else the next 4 checkboxes should be enabled.
Meine Lösung :
- Machen die ersten 4 Checkboxen, radiobuttons, um zu bestätigen, um die nur eine
checkbox ausgewählt werden können Zustand. - Deaktivieren/Aktivieren Sie die nächsten 4 Checkboxen auf der Grundlage der oben genannten Maßnahmen. So,
wenn der radiobutton ist nicht markiert, dann die nächsten 4 Checkboxen sollten
zur Auswahl zur Verfügung.
Muss ich eigentlich deaktivieren Sie die Checkboxen anstatt ausblenden mit jQuery, also die Checkboxen werden sollte solidgray (nicht überprüft), wenn Sie deaktiviert ist.
Beispiel-code (abgestreift einige Formatierungen Durcheinander, für die anderen der Suche nach einer ähnlichen Lösung) :
<div>
<input type="checkbox" name="check1" value="1" id="check1" <?php if (!empty($rows['check1'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check2" value="1" id="check2" <?php if (!empty($rows['check2'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check3" value="1" id="check3" <?php if (!empty($rows['check3'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check4" value="1" id="check4" <?php if (!empty($rows['check4'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check5" value="1" id="check5" <?php if (!empty($rows['check5'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check6" value="1" id="check6" <?php if (!empty($rows['check6'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check7" value="1" id="check7" <?php if (!empty($rows['check7'])) { echo 'checked="checked"'; } ?> />
<input type="checkbox" name="check8" value="1" id="check8" <?php if (!empty($rows['check8'])) { echo 'checked="checked"'; } ?> />
</div>
Meine Anforderungen :
- Was ist der effizienteste Weg, dies zu tun? (einfach ohne komplizierende das problem)
- Jeder Beispielcode ist sehr geschätzt.
- Hasse es dies zu sagen, aber jQuery wäre der einfachste Weg. Sie können zuweisen, Anzahl 4 onClick-events und deaktivieren Sie die nicht ausgewählte Kontrollkästchen, wenn Sie erreichen, Ihre gewünschte Anzahl.
- nach
id
Sie geschlossen, input-tag, aber Sie sollten öffnen, php<?
- Ich würde nicht wechseln, um radio-buttons, wie man Sie nicht ausschalten, so dass nur die Dinge zu komplizieren mehr.
- Barlas : Bearbeiten. Editor Durcheinander diese. @ Dainis : Können Sie bitte erläutern oder post-Beispiel-code? @ jeroen : ich dachte, es ist esier zu verwenden-radio-button, kann aber nicht! Vielen Dank für das feedback. Ich werde erkunden Sie alle Kontrollkästchen, Lösung.
- Nicht sicher, warum dies so ist, wird downvoted! Moderatoren, bitte schließen Sie die Frage, ob Sie denken, das macht keinen Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das ist, was du bist suchen für. Sie können es erreichen mit .index() zu Holen Sie sich die aktuellen angeklickten checkbox. .slice() wird verwendet, um alle Elemente mit index 4 und nach.
FIDDDLE
Oder ist es etwas wie diese, die Sie wollen? Wo nur eine der ersten vier Checkboxen überprüft werden können. Wenn ein ausgewählt ist, dann werden alle anderen deaktiviert werden.
http://jsfiddle.net/h5wDr/
EDIT:
wenn Sie andere Checkboxen auf der Seite und wollen in der Lage sein, um Sie zu trennen von dieser Logik, können Sie hinzufügen Kontext, in dem Selektor-so hält es dieser code, der isoliert nur diejenigen, die innerhalb dieses div-wie so
Dann fügen Sie einfach den Kontext
http://jsfiddle.net/h5wDr/2/
var $inputs = $('input[type=checkbox]', $('div.checkbox_div'));
Dies ist ganz in javascript, und ist Agnostiker auf die Tatsache, dass man mit Hilfe von php. Im wesentlichen stellen wir sicher, dass in den ersten vier für die Sie nicht ausgewählt haben, werden Sie auf false gesetzt. Dann werden wir wechseln den Status des geklickten.
Wenn Sie auf etwas auf, in Ihre ersten vier die letzten vier sind deaktiviert und deaktiviert werden, andernfalls sind Sie renabled. Dies entspricht dem pseudocode gepostet.
Sollten Sie in der Lage, fügen Sie diese direkt in. Die Selektoren werden zwischengespeichert für die Gründe der Schnelligkeit.
http://jsfiddle.net/L4qeN/ es hier zu sehen.
Edit: wow sieht aus wie jemand schlug mich auf die Pointe, indem Sie nur ein paar Minuten. Wir haben sehr verschiedene Methoden; aber.
Müssten Sie es selbst ausprobieren, aber ich würde so etwas machen (mit javascript):
Geben, Ihre ersten vier Checkboxen nur eine Klasse und dann Ihre zweite vier zweiter Klasse, und fügen Sie dann
onclick
- Handler, um das erste Kontrollkästchen:Überprüfen Sie heraus die jQuery :geprüft selector.