Bei Verwendung der neueren Browser, die HTML5 unterstützen (z. B. FireFox 4);
und ein Formularfeld hat das Attribut required='required'
;
und das Formularfeld ist leer / leer;
und die Senden-Schaltfläche wird angeklickt;
Der Browser erkennt, dass das Feld "Erforderlich" leer ist, und sendet das Formular nicht.
Stattdessen zeigt der Browser einen Hinweis an, in dem der Benutzer aufgefordert wird, Text in das Feld einzugeben.
Anstelle eines einzelnen Textfeldes habe ich jetzt eine Gruppe von Kontrollkästchen , von denen mindestens eines vom Benutzer aktiviert werden sollte.
Wie kann ich HTML5 verwenden? required
Attribut für diese Gruppe von Kontrollkästchen verwenden? (Da nur eines der Kontrollkästchen aktiviert sein muss, kann ich das required
Attribut nicht auf jedes einzelne Kontrollkästchen setzen.)
ps. Ich benutze simple_form , wenn das wichtig ist.
AKTUALISIEREN
Könnte das HTML 5 multiple
Attribut hier hilfreich sein? Hat jemand es schon einmal benutzt, um etwas Ähnliches wie meine Frage zu tun?
AKTUALISIEREN
Es scheint, dass diese Funktion von der HTML5-Spezifikation nicht unterstützt wird: ISSUE-111: Was bedeutet die Eingabe. @ Erforderlich für das Kontrollkästchen @type =?
(Problemstatus: Das Problem wurde unbeschadet als geschlossen markiert. ) Und hier ist die Erklärung .
UPDATE 2
Es ist eine alte Frage, wollte aber klarstellen, dass die ursprüngliche Absicht der Frage darin bestand, die oben genannten Aufgaben ohne Verwendung von Javascript ausführen zu können - dh mithilfe einer HTML5-Methode. Im Nachhinein hätte ich das "ohne Javascript" offensichtlicher machen sollen.
quelle
Antworten:
Leider bietet HTML5 keine sofort einsatzbereite Möglichkeit, dies zu tun.
Mit jQuery können Sie jedoch leicht steuern, ob eine Kontrollkästchengruppe mindestens ein markiertes Element enthält.
Betrachten Sie das folgende DOM-Snippet:
Sie können diesen Ausdruck verwenden:
Dies wird zurückgegeben,
true
wenn mindestens ein Element aktiviert ist. Auf dieser Grundlage können Sie Ihre Validierungsprüfung implementieren.quelle
Es ist ein einfacher Trick. Dies ist jQuery-Code, der die HTML5-Validierung ausnutzen kann, indem er die
required
Eigenschaften ändert, wenn eine aktiviert ist. Im Folgenden finden Sie Ihren HTML-Code (stellen Sie sicher, dass Sie alle für die Gruppe erforderlichen Elemente hinzufügen.)Es folgt das jQuery-Skript, das die weitere Validierungsprüfung deaktiviert, wenn eines ausgewählt ist. Wählen Sie mit dem Namenselement.
Kleines Problem hier: Da Sie die HTML5-Validierung verwenden, stellen Sie sicher, dass Sie diese ausführen, bevor sie validiert wird, dh bevor Sie das Formular senden.
quelle
Ich denke, es gibt keinen Standard-HTML5-Weg, um dies zu tun, aber wenn es Ihnen nichts ausmacht, eine jQuery-Bibliothek zu verwenden, konnte ich eine Validierung der "Kontrollkästchengruppe" mithilfe der " Gruppe erforderlich " von Webshims durchführen ‘ Validierungsfunktion:
In den Dokumenten für Gruppenangaben heißt es:
Und hier ist ein Beispiel, wie Sie es verwenden würden:
Ich verwende hauptsächlich Webshims, um HTML5-Funktionen zu polyfillen, aber es gibt auch einige großartige optionale Erweiterungen wie diese.
Sie können sogar Ihre eigenen benutzerdefinierten Gültigkeitsregeln schreiben. Zum Beispiel musste ich eine Kontrollkästchengruppe erstellen, die nicht auf dem Namen der Eingabe basierte, also habe ich meine eigene Gültigkeitsregel dafür geschrieben ...
quelle
HTML5 unterstützt nicht direkt, dass nur ein / mindestens ein Kontrollkästchen in einer Kontrollkästchengruppe aktiviert sein muss. Hier ist meine Lösung mit Javascript:
HTML
JAVASCRIPT
Das Javascript stellt sicher, dass mindestens ein Kontrollkästchen aktiviert ist, und erfordert dann die gesamte Kontrollkästchengruppe. Wenn das aktivierte Kontrollkästchen deaktiviert wird, sind wieder alle Kontrollkästchen erforderlich!
quelle
Ich hatte das gleiche Problem und meine Lösung war folgende:
HTML:
JS:
https://jsfiddle.net/oywLo5z4/
quelle
Inspiriert von den Antworten von @thegauraw und @Brian Woodward, habe ich für JQuery-Benutzer Folgendes zusammengestellt, einschließlich einer benutzerdefinierten Validierungsfehlermeldung:
Beachten Sie, dass in meinem Formular standardmäßig einige Kontrollkästchen aktiviert sind.
Vielleicht könnten einige von Ihnen JavaScript / JQuery-Assistenten das noch weiter verschärfen?
quelle
Wir können dies auch leicht mit HTML5 tun, müssen nur etwas JQuery-Code hinzufügen
Demo
HTML
Jquery
quelle
Ich habe einer Gruppe von Kontrollkästchen ein unsichtbares Radio hinzugefügt. Wenn mindestens eine Option aktiviert ist, wird auch das Radio aktiviert. Wenn alle Optionen abgebrochen sind, ist das Radio ebenfalls auf Abbrechen eingestellt. Daher verwendet das Formular die Eingabeaufforderung "Bitte aktivieren Sie mindestens eine Option".
display: none
da das Radio nicht fokussiert werden kann.HTML
Javascript
CSS
https://jsfiddle.net/codus/q6ngpjyc/9/
quelle
radio
'sopacity
auf 0 und beim Sendenopacity
auf 1 setzen, damit wir steuern können, ob rote Umrisse angezeigt werden oder nicht.visibility: hidden
oderdisplay: none
nur um zu vermeiden, dass die Benutzerfreundlichkeit ein wenig schmutzig wird. Weil Bildschirmleser und andere Eingabehilfen wahrscheinlich das versteckte Optionsfeld finden.Hallo, verwenden Sie einfach ein Textfeld zusätzlich zur Gruppe der Kontrollkästchen. Wenn Sie auf ein Kontrollkästchen klicken, geben Sie Werte in dieses Textfeld ein. Stellen Sie sicher, dass dieses Textfeld erforderlich und schreibgeschützt ist.
quelle
Mir ist klar, dass es hier eine Menge Lösungen gibt, aber ich habe festgestellt, dass keine von ihnen alle meine Anforderungen erfüllt:
name
um Github-Probleme über ihre API zu senden, und verwendete den Namenlabel[]
, um Beschriftungen in vielen Formularfeldern zuzuweisen (zwei Kontrollkästchenlisten und einige Auswahl- und Textfelder) - vorausgesetzt, ich hätte dies erreichen können, ohne dass sie geteilt wurden der gleiche Name, aber ich beschloss, es zu versuchen, und es funktionierte.Die einzige Voraussetzung für diese ist jQuery. Sie können dies mit der großartigen Lösung von @ ewall kombinieren, um benutzerdefinierte Validierungsfehlermeldungen hinzuzufügen.
quelle
Hier ist ein weiterer einfacher Trick mit Jquery !!
HTML
JQuery
Das ist alles. Dies funktioniert, denn wenn keines der Kontrollkästchen aktiviert ist, wird nichts in Bezug auf die Kontrollkästchengruppe (einschließlich ihres Namens) auf dem Server veröffentlicht
quelle
Versuchen:
oder
Genauer:
Stellen Sie beim Lesen von Daten aus dem Kontrollkästchen-Array sicher, dass das Array Folgendes enthält:
In diesem Fall:
quelle