Jak przeprowadzić walidację dla grupy przycisków radiowych (należy wybrać jeden przycisk radiowy) za pomocą wtyczki do walidacji jQuery?
jquery
validation
user27052
źródło
źródło
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!
źródło
focusInvalid: false
dovalidate()
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
źródło
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.
źródło
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>
źródło
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
źródło
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); } },
źródło
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>
źródło
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 -->
źródło