我有多个选择框,用户必须至少选择一个
这是代码
<select name="c_hotels[hotels][2][single_room]" id="c_hotels_2_single_room" class="c_hotels_select_room" style="width: 70px;" onchange="calculate_hotels_prices();">
<select name="c_hotels[hotels][2][double_room]" id="c_hotels_2_double_room" class="c_hotels_select_room" style="width: 70px;" onchange="calculate_hotels_prices();">
<select name="c_hotels[hotels][3][single_room]" id="c_hotels_3_single_room" class="c_hotels_select_room" style="width: 70px;" onchange="calculate_hotels_prices();">
<select name="c_hotels[hotels][3][double_room]" id="c_hotels_3_double_room" class="c_hotels_select_room" style="width: 70px;" onchange="calculate_hotels_prices();">
对于每个酒店,用户可以选择单人间或双人间
我想验证,因此用户必须至少选择一个复选框
我创建了一个方法
$.validator.addMethod("sel`enter code here`ect_hotel", function(value) {
var result=false;
$( ".c_hotels_select_room" ).each(function(){
var id=$(this).attr("id");
var value=$("#"+id+" option:selected").val();
if(value)
{
var result=true;
}
})
return result;
},"message here);
并动态添加规则
$(".c_hotels_select_room").rules("add", { select_hotel:true});
该规则正在运行,但问题是它将消息放在第一个选择框旁边
我已添加到html
<label style="display:none" for="c_hotels_select_room" class="error">This field is required.</label>
所以在我想要的地方显示这条消息,但它不起作用,并假设它不是带有标签的字段名称。
任何人都可以帮我发消息(我试图避免使用errorPlacement)
答案 0 :(得分:1)
您尚未说明要放置错误消息的位置,但以下代码存在缺陷......
$(".c_hotels_select_room").rules("add", { select_hotel:true});
根据jQuery Validation插件的工作原理,上面的代码行只会将.rule()
方法分配给jQuery选择器中的 第一个匹配的元素
如果要将.rule()
方法分配给选择器匹配的所有元素,必须将其包装在jQuery .each()
中...
$(".c_hotels_select_room").each(function() {
$(this).rules("add", { select_hotel:true});
});
修改强>:
.rules()
方法的文档:http://jqueryvalidation.org/rules/
代表.rules()
:
&#34; ...返回第一个选定元素的验证规则。&#34;
代表.rules('add')
:
&#34; ...添加指定的规则并返回第一个匹配元素的所有规则。&#34;
代表.rules('remove')
:
&#34; ...删除指定的规则并返回第一个匹配元素的所有规则。&#34;
答案 1 :(得分:0)
var n= 0;
jQuery("select").each(function() {
n = n+ this.value;
});
if (n < 1) { //obviously do all the checking
alert("Please select any value");
return false;
}