jQuery隐藏的复选框值

时间:2018-01-19 11:35:41

标签: javascript jquery html checkbox

如果" marketingAAA"我试图设置这个方式。被检查为真,一个隐藏的复选框" marketingPhone"也设置为TRUE。这很有效。

但是,如果页面上的任何其他复选框设置为TRUE,那么对于" marketingPhone"它仍然为TRUE。无法弄清楚原因。如果" marketingAAA"它应该保持为假。未选中为TRUE。有没有人看到这个问题?



$(function() {
      var marketingAAA= $("input[type='checkbox']");
      var marketingPhone = $("input[type='hidden'][name='marketingPhone']");

    marketingAAA.on('change', function()
            {
            if ($(this).val() == "TRUE")  {
              marketingPhone.prop('checked',true);
              marketingPhone.val('TRUE');

    } else {
              marketingPhone.prop('checked',false);
              marketingPhone.val('FALSE');

     }
        });
    });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="marketingrules" name="marketingBBB" type="checkbox" class="radio-button-input" value="TRUE">

 <input id="marketing" name="marketingAAA" type="checkbox" class="radio-button-input" value="TRUE">

<input type="hidden" name="marketingPhone" value=""/>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

问题是因为您正在选择所有 [type="checkbox"]元素。要解决此问题,请仅选择marketingAAA元素。

请注意,在下面的示例中,我将隐藏元素更改为text,以便更容易看到效果。我还删除了checked属性的设置,因为hidden输入没有。

&#13;
&#13;
$(function() {
  var $marketingAAA = $("#marketing");
  var $marketingPhone = $("input[name='marketingPhone']");

  $marketingAAA.on('change', function() {
    $marketingPhone.val(this.checked ? 'TRUE' : 'FALSE');
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="marketingrules" name="marketingBBB" type="checkbox" class="radio-button-input" value="TRUE">

<input id="marketing" name="marketingAAA" type="checkbox" class="radio-button-input" value="TRUE">
<input type="text" name="marketingPhone" value="" />
&#13;
&#13;
&#13;

答案 1 :(得分:2)

在您的功能中,您应指定&#39; marketAAA&#39;。

var marketingAAA= $("input[type='checkbox'][name='marketingAAA']");

现在它检查所有复选框,如果一个为真,它将检查&#39; marketingPhone&#39;。

$(function() {
  var marketingAAA= $("input[type='checkbox'][name='marketingAAA']");
  var marketingPhone = $("input[type='hidden'][name='marketingPhone']");

marketingAAA.on('change', function()
        {
        if ($(this).val() == "TRUE")  {
          marketingPhone.prop('checked',true);
          marketingPhone.val('TRUE');

} else {
          marketingPhone.prop('checked',false);
          marketingPhone.val('FALSE');

 }
    });
});

答案 2 :(得分:1)

正确设置此var

var marketingAAA= $("#marketing");

答案 3 :(得分:1)

问题在于您在脚本中定义变量marketingAAA:

var marketingAAA= $("input[type='checkbox']");

这样您就可以选择页面中的所有复选框,但只需要marketingAAA。

因此,不要选择所有复选框,而是尝试通过它获取元素的ID:

var marketingAAA= $("#marketing");

或者它的名字就像你在以下行中所做的那样:

var marketingAAA = $("input[type='checkbox'][name='marketingAAA']");

请记住,html中的ID应该是唯一的!