我已经设置了一个注册表单,用户必须检查他们想要的服务,我的HTML看起来像这样:
<label><input name="serviceopt1" type="checkbox" id="serviceopt1" value="1"> IT Services</label>
<label><input name="serviceopt2" type="checkbox" id="serviceopt2" value="1"> Catering Services</label>
<label><input name="serviceopt3" type="checkbox" id="serviceopt3" value="1"> PAT Testing</label>
<label><input name="serviceopt4" type="checkbox" id="serviceopt4" value="1"> Building Services</label>
然后我按如下方式设置了我的ajaxform,如果选择了non,那么它会要求你检查第一个复选框:
var serviceopt1 = $("input[name=serviceopt1]:checked").val();
var serviceopt2 = $("input[name=serviceopt2]:checked").val();
var serviceopt3 = $("input[name=serviceopt3]:checked").val();
var serviceopt4 = $("input[name=serviceopt4]:checked").val();
if (serviceopt1 == "") {
$("input:checkbox[name=serviceopt1]").val();
$("input:checkbox[name=serviceopt1]").parent("label").css({color:"#b72a18"});
return false;
}
我遇到的问题是,如果取消选中以下某些复选框,则会将其视为未定义,以阻止电子邮件确认通过。
那么如何解决这个问题呢?如果选中它们,它们的值为1,如果未选中,则值为0。
答案 0 :(得分:1)
我不确定您到底在寻找什么,但是以下代码可能会对您有所帮助:
如果您只想设置1
复选框已选中且0
未选中复选框,请执行此操作
$("input:checkbox").on("change",function(){
$("input:checkbox").each(function(i,elem){
this.checked ? this.value = 1 : this.value = 0
});
});
答案 1 :(得分:1)
关于您 的问题我遇到的问题是,如果取消选中以下某些复选框,则会将其视为未定义,从而停止通过 我想要的电子邮件确认纠正这里的一些事情。
当你写下线
时var serviceopt1 = $("input[name=serviceopt1]:checked").val();
如果您没有serviceop1
复选框,则checked
将始终未定义,因为上面的行$("input[name=serviceopt1]:checked")
会检查checkbox
是否已选中,然后获取其值。因此,只需将值存储在变量中即可
var serviceopt1 = $('input[name="serviceopt1"]').val();
这将获得input checkbox
与name = serviceopt1
的值。与其他checkboxes
相同。
现在关于更改value
,您可以使用@ DhavalMarthak更改checkboxes
值的方法,并且variables
要执行验证,您可以执行以下操作,以便至少有一个checkbox
为checked
if (serviceopt1 == "0" && serviceopt2=="0" && serviceopt3="0" && serviceopt4=="0" )
{
//none of them are checked
$.each($('input:checkbox[name^="serviceopt"]'),function(){
$(this).parent("label").css({color:"#b72a18"}); //add css to all labels of checkbox since none of them are checked
return false;
}
}
我在此假设您只需要一个
checkbox
checked