未收到表单提交,因为未选中所有复选框

时间:2015-09-01 11:59:17

标签: php jquery html ajax forms

我已经设置了一个注册表单,用户必须检查他们想要的服务,我的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。

2 个答案:

答案 0 :(得分:1)

我不确定您到底在寻找什么,但是以下代码可能会对您有所帮助:

如果您只想设置1复选框已选中且0未选中复选框,请执行此操作

$("input:checkbox").on("change",function(){
    $("input:checkbox").each(function(i,elem){
        this.checked ? this.value = 1 : this.value = 0
    });
});

Demo

答案 1 :(得分:1)

关于您 的问题我遇到的问题是,如果取消选中以下某些复选框,则会将其视为未定义,从而停止通过 我想要的电子邮件确认纠正这里的一些事情。

当你写下线

var serviceopt1 = $("input[name=serviceopt1]:checked").val();

如果您没有serviceop1复选框,则checked将始终未定义,因为上面的行$("input[name=serviceopt1]:checked")会检查checkbox是否已选中,然后获取其值。因此,只需将值存储在变量中即可

var serviceopt1 = $('input[name="serviceopt1"]').val();

这将获得input checkboxname = serviceopt1的值。与其他checkboxes相同。

现在关于更改value,您可以使用@ DhavalMarthak更改checkboxes值的方法,并且variables

中始终会有价值

要执行验证,您可以执行以下操作,以便至少有一个checkboxchecked

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