【问题标题】:Boolean value fr checkbox input复选框输入的布尔值
【发布时间】:2015-09-09 08:32:03
【问题描述】:

我有一个带有这样复选框的表单

<form method="post" action="" enctype="multipart/form-data">
<input class="check_bool" type="checkbox" name="best" <?php if($destination_record[0]->destination_best){echo "checked ='checked'";}?>>
<input type="submit" id="form_submit" value="Update" name="btnUpdate">

现在我正在使用表单提交中调用的以下代码转换复选框的值

$('#form_submit').click(function() {

    $( ".check_bool" ).each(function() {
        if( $(this ).attr( 'type' ) === 'checkbox' ) {
        if($(this).is( ':checked' )){
            $(this).val('1');
        }else{
            $(this).val('0');
        }

        alert($(this).val());
        }
    })
})

但在那之后,我可以将复选框上的所有 0 值更改为 1,但不能将任何 1 值更改为 0。警报值相应地给出 1 或零。但是当它为 0 时,我在复选框的 post 数组中没有任何元素。

【问题讨论】:

  • 未选中的复选框未发布。服务器端,如果你得到一些东西,你可以确定这是被检查过的,只要用户没有干预并伪造请求当然......
  • 谢谢。我应该知道的。我计划获取值并将其存储在某个隐藏字段中,因为我的控制器在这里接受许多其他形式的不同类型。

标签: javascript php jquery checkbox


【解决方案1】:
  1. 你的 php 中有两个错误

    • 第一行动作后没有"
    • 第一个输入元素没有关闭

<form method="post" action="" enctype="multipart/form-data">
<input class="check_bool" type="checkbox" name="best" <?php if($destination_record[0]->destination_best){echo "checked ='checked'";}?>>
<input type="submit" id="form_submit" value="Update" name="btnUpdate">
  1. 您必须以某种方式删除属性 ,checked='checked',才能使 1 再次变回 0

【讨论】:

  • 谢谢。对不起,我错了。第一个是我试图删除其余不必要的设计相关类时的缺陷。我的原始代码实际上没有这些错误。而且它仍然无法正常工作。我可以在我的代码中编辑它们吗?
【解决方案2】:

我刚刚修改了我的代码,为每个复选框输入设置了不同的隐藏字段。

html:

<div class="col-sm-6">
            <input class="check_bool" type="checkbox" <?php if($destination_record[0]->destination_best){echo "checked ='checked'";}?>/>
            <input type="hidden" name="best" class="check_val" />
</div>

然后是js:

$('#form_submit').click(function() {
    $( ".check_bool" ).each(function() {
        if( $(this ).attr( 'type' ) === 'checkbox' ) {
          if($(this).is( ':checked' )){
            $(this).closest("div").find(".check_val").val('1');
          }else{
            $(this).closest("div").find(".check_val").val('0');
          }

        }
    })
})

它现在可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2012-06-04
    • 2011-10-14
    • 1970-01-01
    • 2013-12-09
    • 2015-11-19
    • 2014-10-09
    相关资源
    最近更新 更多