JQuery doğrulama eklentisi kullanılarak bir radyo düğmesi grubu (bir radyo düğmesi seçilmelidir) için doğrulama nasıl gerçekleştirilir?
JQuery doğrulama eklentisi kullanılarak bir radyo düğmesi grubu (bir radyo düğmesi seçilmelidir) için doğrulama nasıl gerçekleştirilir?
Yanıtlar:
Daha yeni jquery sürümleriyle (sanırım 1.3+), yapmanız gereken tek şey radyo setinin üyelerinden birini gerekli olacak şekilde ayarlamak ve gerisini jquery halledecektir:
<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
Yukarıdakiler, devam etmeden önce "seçeneklerim" adıyla birlikte 3 radyo seçeneğinden en az 1'inin seçilmesini gerektirecektir.
Mahes'in etiket önerisi, btw, harika çalışıyor!
focusInvalid: false
için validate()
seçenekler ilk radyo düğmesinin vurgulayarak önleyecektir.
radyo düğmesi grubu seçimini doğrulamak için aşağıdaki kuralı kullanın
myRadioGroupName : {required :true}
myRadioGroupName, name özniteliğine verdiğiniz değerdir
label
, hatanın etiketini kendinize yazmak faydasızdır , aslında eklenti bu hata etiketi etiketini otomatik olarak ekler.
Bunu da kullanabilirsiniz:
<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>
ve basitçe bu kuralı ekleyin
rules: {
'myoptions[]':{ required:true }
}
Kuralların nasıl ekleneceğinden bahsedin.
name="myoptions[]"
birden fazla değerin döndürülebileceğini ima ettiğinden biraz kafa karıştırıcıdır.
Brandon'ın cevabına göre. Ancak, göze çarpmayan doğrulama kullanan ASP.NET MVC kullanıyorsanız, data-val özniteliğini ilkine ekleyebilirsiniz. Ayrıca kullanılabilirlik için her radyo düğmesi için etiketlerim olmasını seviyorum.
<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>
Doğrulamanın başka bir yolu da şudur.
var $radio = $('input:radio[name="nameRadioButton"]');
$radio.addClass("validate[required]");
Umarım örneğim sana yardımcı olur
Ben de aynı sorunu yaşadım. Doğrulayıcı için özel bir vurgulama ve vurgulama kaldırma işlevi yazarak sarın. Bunu doğrulama seçeneklerine eklemek, hata sınıfını öğeye ve ilgili etikete eklemelidir:
'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);
}
},
radyo düğmesi kodu -
<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"/>
ve jQuery kodu-
<script>
$(document).ready(function () {
$('#create').click(function(){
var gender=$('#Gender').val();
if ($("#Gender:checked").length == 0){
$('.GenderValidation').text("Gender is required.");
return false;
}
});
});
</script>
Hata mesajını en üste koyar.
<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 -->