[英]Making sure at least 1 of 40+ radio buttons is checked
我正在使用jquery.validate表單表單驗證。 問題是大約有40個無線電輸入,形式為s1_AM
, s1_PM
, s2_AM
, s2_PM
,每個都有大約10個radio
輸入。 至少要檢查四個選項之一,而不是全部四個。 如果我在代碼中放入class="required"
,那是不正確的,因為它使所有四個選項成為必需。 我該如何解決?
理想情況下,id喜歡按原樣進行驗證,但是如果無線電是空的,則添加警報。
jQuery的
jQuery.validator.messages.required = "";
$("#enroll").validate({
invalidHandler: function(e, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message = errors == 1
? 'You missed 1 required field'
: 'You missed ' + errors + ' required fields';
$("div.Error span").html(message);
$("div.Error").show();
} else {
$("div.Error").hide();
}
}
});
收音機是動態的:
if($row['s1_AM_fill'] < $row['s1_AM_cap']) {
$s1_AM .= '<input type="radio" name="s1_AM" id="s1_AM_'.$id.'" value="'.$id.'" />;
}
再加上三個,分別是s1_PM
, s2_AM
和s2_PM
。
這是我的工作,除了警報啟動后,警報不會停止
$('#submit').click(function () {$("ul.courses").each(function(){
$(this).find("input[type=radio]").each(function(){
alert("You must select at least 1 available course");
});
return false;
});
您不應使用僅可能會干擾插件的內置事件處理程序的其他submit
或click
處理程序功能。
您只需使用插件的內置addMethod()
方法創建一個新規則。 像這樣
jQuery.validator.addMethod('customrule', function() {
return ($("input[name='s1_AM']:checked").val() || $("input[name='s1_PM']:checked").val() || $("input[name='s2_AM']:checked").val() || $("input[name='s2_PM']:checked").val());
}, 'Please select from at least one group' );
新規則檢查是否使用了四個radio
組中的至少一個。 該規則適用如下...
$(document).ready(function() {
$('#enroll').validate({ // initialize the plugin
rules: {
's1_AM': {
customrule: true
},
's1_PM': {
customrule: true
},
's2_AM': {
customrule: true
},
's2_PM': {
customrule: true
}
},
groups: { // use this option to consolidate the four messages into one
groupname: "s1_AM s1_PM s2_AM s2_PM"
}
});
});
工作演示: http : //jsfiddle.net/93jTZ/
您需要根據自己項目的規范調整錯誤放置功能。
其他選項: http : //docs.jquery.com/Plugins/Validation/validate#toptions
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.