132 Stimmen

Validierung der Optionsschaltflächengruppe mit dem jQuery-Validierungs-Plugin

Wie führt man eine Validierung für eine Radio-Button-Gruppe (ein Radio-Button sollte ausgewählt werden) mit jQuery Validation Plugin?

0 Stimmen

Siehe die Antwort von c.reeves in forum.jquery.com/topic/

0 Stimmen

Es gibt einen neuen jQuery-Validator, der sehr leistungsfähig und einfach zu bedienen ist. Sie können es auschecken: code.google.com/p/bvalidator

0 Stimmen

Nicht eine ganze Bibliothek für etwas so Einfaches wie dieses einbeziehen wollen

116voto

Brandon Rome Punkte 61

Bei neueren Versionen von Jquery (1.3+, glaube ich) müssen Sie nur eines der Elemente des Radio-Sets als erforderlich festlegen, und Jquery kümmert sich um den Rest:

<input type="radio" name="myoptions" value="blue" class="required"> Blue<br />
<input type="radio" name="myoptions" value="red"> Red<br />
<input type="radio" name="myoptions" value="green"> Green

In diesem Fall muss mindestens eine der 3 Optionen mit dem Namen "Meine Optionen" ausgewählt werden, bevor Sie fortfahren können.

Der Vorschlag von Mahes für das Etikett funktioniert übrigens wunderbar!

0 Stimmen

Dies ist jetzt die beste Antwort für mich mit den Updates zu jQuery. +1.

6 Stimmen

Das einzige Problem dabei ist, dass jQuery validate das erste Optionsfeld rot hervorhebt, wenn keines von ihnen markiert ist, aber in Wirklichkeit wollen Sie wahrscheinlich ALLE markieren. Außerdem sollte die rote Markierung verschwinden, sobald Sie eine Optionsschaltfläche aktivieren.

2 Stimmen

@Haacked Sie könnten die errorPlacement Callback-Funktion in den Validierungsoptionen verwenden, um die Fehlermeldung an einer sinnvollen Stelle zu platzieren?

26voto

Mahes Punkte 3580

Verwenden Sie die folgende Regel zur Überprüfung der Auswahl von Optionsschaltflächengruppen

myRadioGroupName : {required :true}

myRadioGroupName ist der Wert, den Sie dem Attribut name gegeben haben

15 Stimmen

Beachten Sie, dass Sie, wenn Sie die Position des Etiketts kontrollieren wollen, Ihr eigenes Fehleretikett an der gewünschten Stelle mit dem von Ihnen gewünschten Text erstellen können: <label for="myRadioGroupName" class="error" style="display:none;">Bitte wählen Sie eine aus.</label>

0 Stimmen

@Tom es ist nutzlos, sich die label Tag für den Fehler, tatsächlich fügt das Plugin automatisch dieses Fehlerlabel-Tag hinzu.

3 Stimmen

Das ist schon ziemlich lange her, aber ich glaube, ich wollte das <label> an einer anderen Stelle im DOM platzieren als dort, wo es automatisch vom Plugin erstellt wurde. Es ist auch gut möglich, dass sich das Verhalten des Plugins in den letzten 5 Jahren geändert hat...

21voto

Haider Abbas Punkte 1

Sie können auch dies verwenden:

<fieldset>
<input type="radio" name="myoptions[]" value="blue"> Blue<br />
<input type="radio" name="myoptions[]" value="red"> Red<br />
<input type="radio" name="myoptions[]" value="green"> Green<br />
<label for="myoptions[]" class="error" style="display:none;">Please choose one.</label>
</fieldset>

und fügen Sie einfach diese Regel hinzu

rules: {
 'myoptions[]':{ required:true }
}

Erwähnen Sie, wie Sie Regeln hinzufügen können.

1 Stimmen

Aber dies würde Fehler auf HTML5-Validierung ich glaube, wie das for-Attribut muss eine ID-Referenz (die wir nicht 3 Radio-Buttons auf die gleiche ID setzen können) sein bringen.

1 Stimmen

Es besteht ein großer Unterschied zwischen dem Attribut name und dem Attribut id.

2 Stimmen

Bitte beachten Sie, dass eine Optionsschaltfläche nur einen Wert zurückgeben sollte, daher muss die name="myoptions[]" ist ein wenig verwirrend, da es darauf hindeutet, dass mehrere Werte zurückgegeben werden können.

6voto

Matt Frear Punkte 48503

Wie in der Antwort von Brandon. Aber wenn Sie ASP.NET MVC verwenden, die unaufdringliche Validierung verwendet, können Sie das data-val-Attribut zum ersten hinzufügen. Ich mag auch Beschriftungen für jedes Optionsfeld für Benutzerfreundlichkeit haben.

<span class="field-validation-valid" data-valmsg-for="color" data-valmsg-replace="true"></span>
<p><input type="radio" name="color" id="red" value="R" data-val="true" data-val-required="Please choose one of these options:"/> <label for="red">Red</label></p>
<p><input type="radio" name="color" id="green" value="G"/> <label for="green">Green</label></p>
<p><input type="radio" name="color" id="blue" value="B"/> <label for="blue">Blue</label></p>

3voto

strudeltercero Punkte 1

Eine andere Möglichkeit der Validierung ist die folgende.

var $radio = $('input:radio[name="nameRadioButton"]');
$radio.addClass("validate[required]");

Ich hoffe, mein Beispiel wird Ihnen helfen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X