Jak przeprowadzić walidację dla grupy przycisków radiowych (należy wybrać jeden przycisk radiowy) za pomocą wtyczki do walidacji jQuery?
Jak przeprowadzić walidację dla grupy przycisków radiowych (należy wybrać jeden przycisk radiowy) za pomocą wtyczki do walidacji jQuery?
Odpowiedzi:
W nowszych wersjach jquery (myślę, że 1.3+), wszystko co musisz zrobić, to ustawić jednego z członków radia na wymagany, a jquery zajmie się resztą:
<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
Powyższe wymagałoby wybrania co najmniej 1 z 3 opcji radiowych z nazwą „moje opcje” przed kontynuowaniem.
Przy okazji, propozycja etykiety Mahesa działa cudownie!
focusInvalid: false
do validate()
opcji zapobiegnie podświetleniu pierwszego przycisku opcji.
użyj następującej reguły do weryfikacji wyboru grupy przycisków opcji
myRadioGroupName : {required :true}
myRadioGroupName to wartość, którą nadałeś atrybutowi nazwy
label
tagu błędu, w rzeczywistości wtyczka automatycznie dodaje ten tag z etykietą błędu.
Możesz również użyć tego:
<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>
i po prostu dodaj tę regułę
rules: {
'myoptions[]':{ required:true }
}
Wspomnij, jak dodać reguły.
name="myoptions[]"
jest to nieco zagmatwane, ponieważ wskazuje, że można zwrócić wiele wartości.
Zgodnie z odpowiedzią Brandona. Ale jeśli używasz ASP.NET MVC, który używa dyskretnej weryfikacji, możesz dodać atrybut data-val do pierwszego. Lubię też mieć etykiety dla każdego przycisku opcji w celu ułatwienia korzystania.
<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>
Inny sposób weryfikacji jest taki.
var $radio = $('input:radio[name="nameRadioButton"]');
$radio.addClass("validate[required]");
Mam nadzieję, że mój przykład ci pomoże
Miałem ten sam problem. Wystarczy napisać niestandardową funkcję podświetlania i usuwania podświetlenia dla walidatora. Dodanie tego do opcji walidacji powinno dodać klasę błędu do elementu i jego odpowiedniej etykiety:
'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);
}
},
kod przycisku opcji -
<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"/>
i kod jQuery-
<script>
$(document).ready(function () {
$('#create').click(function(){
var gender=$('#Gender').val();
if ($("#Gender:checked").length == 0){
$('.GenderValidation').text("Gender is required.");
return false;
}
});
});
</script>
Umieszcza komunikat o błędzie u góry.
<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 -->