Wie führe ich eine Validierung für eine Optionsfeldgruppe durch (ein Optionsfeld sollte ausgewählt sein) mit dem jQuery-Validierungs-Plugin?
Wie führe ich eine Validierung für eine Optionsfeldgruppe durch (ein Optionsfeld sollte ausgewählt sein) mit dem jQuery-Validierungs-Plugin?
Antworten:
Bei neueren Versionen von jquery (1.3+, glaube ich) müssen Sie lediglich eines der erforderlichen Mitglieder des Funkgeräts einstellen, 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
Für das oben Gesagte muss mindestens eine der drei Funkoptionen mit dem Namen "Meine Optionen" ausgewählt werden, bevor Sie fortfahren können.
Der Label-Vorschlag von Mahes funktioniert übrigens wunderbar!
focusInvalid: false
zu den validate()
Optionen wird das Hervorheben des ersten Optionsfelds verhindert.
Verwenden Sie die folgende Regel, um die Auswahl der Optionsfeldgruppe zu überprüfen
myRadioGroupName : {required :true}
myRadioGroupName ist der Wert, den Sie dem Namensattribut gegeben haben
label
Tag für den Fehler selbst zu schreiben , tatsächlich fügt das Plugin dieses Fehler-Label-Tag automatisch hinzu.
Sie können auch Folgendes 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.
name="myoptions[]"
ist etwas verwirrend, da darauf hingewiesen wird, dass mehrere Werte zurückgegeben werden können.
Nach Brandons Antwort. Wenn Sie jedoch ASP.NET MVC verwenden, das eine unauffällige Validierung verwendet, können Sie das Attribut data-val zum ersten hinzufügen. Ich habe auch gerne Beschriftungen für jedes Optionsfeld, um die Benutzerfreundlichkeit zu gewährleisten.
<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>
Eine andere Möglichkeit zur Validierung ist folgende.
var $radio = $('input:radio[name="nameRadioButton"]');
$radio.addClass("validate[required]");
Ich hoffe mein Beispiel wird Ihnen helfen
Ich hatte das gleiche Problem. Wir haben gerade eine benutzerdefinierte Hervorhebungs- und Hervorhebungsfunktion für den Validator geschrieben. Wenn Sie dies zu den Validierungsoptionen hinzufügen, sollte die Fehlerklasse dem Element und seiner jeweiligen Bezeichnung hinzugefügt werden:
'highlight': function (element, errorClass, validClass) {
if($(element).attr('type') == 'radio'){
$(element.form).find("input[type=radio]").each(function(which){
$(element.form).find("label[for=" + this.id + "]").addClass(errorClass);
$(this).addClass(errorClass);
});
} else {
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element).addClass(errorClass);
}
},
'unhighlight': function (element, errorClass, validClass) {
if($(element).attr('type') == 'radio'){
$(element.form).find("input[type=radio]").each(function(which){
$(element.form).find("label[for=" + this.id + "]").removeClass(errorClass);
$(this).removeClass(errorClass);
});
}else {
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element).removeClass(errorClass);
}
},
Code für Optionsfeld -
<div>
<span class="radio inline" style="margin-right: 10px;">@Html.RadioButton("Gender", "Female",false) Female</span>
<span class="radio inline" style="margin-right: 10px;">@Html.RadioButton("Gender", "Male",false) Male</span>
<div class='GenderValidation' style="color:#ee8929;"></div>
</div>
<input class="btn btn-primary" type="submit" value="Create" id="create"/>
und jQuery Code-
<script>
$(document).ready(function () {
$('#create').click(function(){
var gender=$('#Gender').val();
if ($("#Gender:checked").length == 0){
$('.GenderValidation').text("Gender is required.");
return false;
}
});
});
</script>
Setzt die Fehlermeldung oben.
<style>
.radio-group{
position:relative; margin-top:40px;
}
#myoptions-error{
position:absolute;
top: -25px;
}
</style>
<div class="radio-group">
<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 </div>
</div><!-- end radio-group -->