Ich habe zwei Optionsfelder in einem HTML-Formular. Ein Dialogfeld wird angezeigt, wenn eines der Felder null ist. Wie kann ich überprüfen, ob ein Optionsfeld ausgewählt ist?
javascript
Anfänger
quelle
quelle
Antworten:
Stellen wir uns vor, Sie hätten HTML wie dieses
Für die clientseitige Validierung finden Sie hier Javascript, um zu überprüfen, welches ausgewählt ist:
Das oben Genannte könnte je nach Art Ihres Markups effizienter gestaltet werden. Dies sollte jedoch ausreichen, um Ihnen den Einstieg zu erleichtern.
Wenn Sie sich nur um zu sehen suchen , wenn jedes Optionsfeld ausgewählt ist überall auf der Seite, PrototypeJS macht es sehr einfach.
Hier ist eine Funktion, die true zurückgibt, wenn mindestens ein Optionsfeld irgendwo auf der Seite ausgewählt ist. Auch dies muss möglicherweise abhängig von Ihrem spezifischen HTML-Code angepasst werden.
Bei der serverseitigen Validierung (denken Sie daran, dass Sie sich bei der Validierung nicht vollständig auf Javascript verlassen können!) Hängt dies von der Sprache Ihrer Wahl ab, aber Sie würden nur den
gender
Wert der Anforderungszeichenfolge überprüfen .quelle
Mit jQuery wäre es so etwas wie
Lassen Sie mich das in Stücke zerlegen, um es klarer abzudecken. jQuery verarbeitet Dinge von links nach rechts.
input
beschränkt es auf Eingabe-Tags.[name=gender]
beschränkt es auf Tags mit dem Namen gender innerhalb der vorherigen Gruppe.:checked
beschränkt es auf Kontrollkästchen / Optionsfelder, die in der vorherigen Gruppe ausgewählt wurden.Wenn Sie dies ganz vermeiden möchten, markieren Sie eines der Optionsfelder
checked="checked"
im HTML-Code als markiert ( ) , um sicherzustellen, dass immer ein Optionsfeld ausgewählt ist.quelle
Ein Vanille-JavaScript-Weg
quelle
name
.Ich versuche nur, die Lösung von Russ Cam mit etwas CSS-Selektorzucker zu verbessern, der mit dem Vanille-JavaScript eingeworfen wurde.
Hier wird jQuery nicht wirklich benötigt, querySelectorAll wird jetzt weitgehend genug unterstützt.
Bearbeiten: Ein Fehler mit dem CSS-Selektor wurde behoben. Ich habe die Anführungszeichen eingefügt, obwohl Sie sie weglassen können. In einigen Fällen können Sie dies nicht. Daher ist es besser, sie beizubehalten.
quelle
a[href^="http://"]
) erforderlich wären und die Konsistenz besser gewartet werden kann. Außerdem kann die Attributdeklaration damit dem entsprechenden HTML-Code entsprechen.HTML Quelltext
Javascript Code:
quelle
Sie können dieses einfache Skript verwenden. Möglicherweise haben Sie mehrere Optionsfelder mit demselben Namen und unterschiedlichen Werten.
quelle
Die Skripte auf dieser Seite haben mir geholfen, das folgende Skript zu erstellen, das meiner Meinung nach vollständiger und universeller ist. Grundsätzlich werden beliebig viele Optionsfelder in einem Formular überprüft, dh es wird sichergestellt, dass für jede der verschiedenen Optionsgruppen im Formular eine Optionsoption ausgewählt wurde. zB im folgenden Testformular:
Das RadioValidator-Skript stellt sicher, dass sowohl für 'test1' als auch für 'test2' eine Antwort gegeben wurde, bevor es gesendet wird. Sie können so viele Funkgruppen im Formular haben, dass alle anderen Formularelemente ignoriert werden. Alle fehlenden Funkantworten werden in einem einzelnen Alarm-Popup angezeigt. Hier geht es, ich hoffe es hilft den Menschen. Fehlerbehebungen oder hilfreiche Änderungen sind willkommen :)
quelle
Beachten Sie dieses Verhalten mit jQuery beim Abrufen von Radioeingabewerten:
Gibt
$('input[name="myRadio"]').val()
also nicht den erwarteten Wert des Funkeingangs zurück, wie Sie es erwarten könnten - er gibt den Wert des ersten Optionsfelds zurück.quelle
Mit mootools ( http://mootools.net/docs/core/Element/Element )
html:
js:
quelle
Dies ist eine Dienstprogrammfunktion, die ich erstellt habe, um dieses Problem zu lösen
quelle
Dies gilt für Optionsfelder mit demselben Namen, für die keine JQuery erforderlich ist.
Wenn es sich um Kontrollkästchen handelt und wir möchten, dass eine Liste mit aktivierten Kontrollkästchen einen Namen teilt:
quelle
quelle
nur eine kleine Modifikation von Mark Biek;
HTML QUELLTEXT
und Javascript-Code, um zu überprüfen, ob das Optionsfeld ausgewählt ist
quelle
Es gibt eine sehr ausgefeilte Möglichkeit, zu überprüfen, ob eines der Optionsfelder mit ECMA6 und der Methode aktiviert ist
.some()
.Html:
Und Javascript:
isAnyRadioButtonChecked
wird seintrue
wenn einige der Optionsfelder aktiviert sind undfalse
wenn keines von beiden aktiviert ist.quelle
quelle
http://www.somacon.com/p143.php/
quelle
Mit JQuery können Sie den aktuellen Status der Optionsfelder auch überprüfen, indem Sie das Attribut "überprüft" aktivieren.
Beispielsweise:
In diesem Fall können Sie die Schaltflächen überprüfen mit:
quelle
$("#gender_male").attr("checked")
eine Zeichenfolge"checked"
und kein Boolescher Wert .Dieser Code alarmiert das ausgewählte Optionsfeld, wenn das Formular gesendet wird. Es wurde jQuery verwendet, um den ausgewählten Wert abzurufen.
quelle
Ich habe den Spread-Operator verwendet und einige , um zu überprüfen, ob mindestens ein Element im Array den Test besteht.
Ich teile für wen Sorge.
quelle
Hier ist die Lösung, die erweitert wurde, um die Übermittlung nicht fortzusetzen und eine Warnung zu senden, wenn die Optionsfelder nicht aktiviert sind. Dies würde natürlich bedeuten, dass Sie sie zunächst deaktivieren müssen!
Denken Sie daran, die ID ('radio1', 'radio2' oder wie auch immer Sie sie genannt haben) im Formular für jedes der Optionsfelder festzulegen, da sonst das Skript nicht funktioniert.
quelle
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }
.Ein Beispiel:
quelle
Die Form
Das Skript
Die Geige: http://jsfiddle.net/PNpUS/
quelle
Ich möchte nur sicherstellen, dass etwas ausgewählt wird (mit jQuery):
quelle
Wenn Sie Vanille-JavaScript möchten, Ihr Markup nicht durch Hinzufügen von IDs auf jedem Optionsfeld überladen möchten und sich nur für moderne Browser interessieren , ist der folgende funktionale Ansatz für mich etwas geschmackvoller als eine for-Schleife:
Wenn beides nicht aktiviert ist, wird es zurückgegeben
undefined
(obwohl Sie die obige Zeile ändern können, um etwas anderes zurückzugeben, z. B. umfalse
zurückgegeben zu werden, können Sie die entsprechende Zeile oben ändern in:}).pop() || {value:false}).value;
.Es gibt auch den zukunftsweisenden Polyfill-Ansatz, da die RadioNodeList- Schnittstelle es einfach machen sollte, nur eine
value
Eigenschaft in der Liste der untergeordneten Formular-Radioelemente (im obigen Code alsformElement[radioName]
) zu verwenden, aber das hat seine eigenen Probleme: Wie man RadioNodeList polyfill ?quelle
Dies funktioniert auch, indem vermieden wird, dass eine Element-ID aufgerufen wird, sondern dass sie als Array-Element verwendet wird.
Der folgende Code basiert auf der Tatsache, dass ein Array, das als Radiobuttons-Gruppe bezeichnet wird, aus Radiobuttons-Elementen in derselben Reihenfolge besteht, in der sie im HTML-Dokument deklariert wurden:
quelle
HTML:
JAVAScript:
quelle
Geben Sie Optionsfelder mit demselben Namen, aber unterschiedlichen IDs ein.
quelle