【问题标题】:post certain value for each checked and unchecked checkbox为每个选中和未选中的复选框发布特定值
【发布时间】:2017-10-04 09:43:43
【问题描述】:

我有一组复选框控件,我想在数组中为选中的控件发布某个值,为未选中的控件发布 null

我在下面编写了代码 sn-p,但无论它们的检查状态如何,我总是得到相同的值

$("#bt1").click(function() {
  var checked = []
  var val = ''
  var $chbx = $("input[name='advsrc']")
  $chbx.each(function() {
    if ($chbx.is(':checked')) {
      val = 'ahmad'
    } else {
      val = 'null'
    }
    checked.push(val);
  });
  console.log(checked)

  return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="bt1" type="button" value="button" />
<input id="grndsrc" type="checkbox" checked="checked" name="advsrc" />
<input id="fnamesrc" type="checkbox" name="advsrc" />
<input id="lnamesrc" type="checkbox" name="advsrc" />
<input id="dobsrc" type="checkbox" name="advsrc" />
<input id="telsrc" type="checkbox" name="advsrc" />
<input id="ssnsrc" type="checkbox" name="advsrc" />

@techlove 的回答

$("#bt1").click(function() {
  var checked = []
  var val = ''
  var $chbx = $("input[name='advsrc']")
  $chbx.each(function() {
    if ($(this).attr("checked")) {
      val = 'ahmad'
    } else {
      val = 'null'
    }
    checked.push(val);
  });
  console.log(checked)

  return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="bt1" type="button" value="button" />

<input id="grndsrc" type="checkbox" name="advsrc" />
<input id="fnamesrc" type="checkbox" name="advsrc" />
<input id="lnamesrc" type="checkbox" name="advsrc" />
<input id="dobsrc" type="checkbox" name="advsrc" />
<input id="telsrc" type="checkbox" name="advsrc" />
<input id="ssnsrc" type="checkbox" name="advsrc" />

【问题讨论】:

  • 使用 if ($(this).attr("checked"))。这里:stackoverflow.com/questions/2660323/…
  • 感谢您的及时回复,没有成功
  • jsfiddle.net/6v0f9ogq 工作小提琴
  • 抱歉,按钮无法触发
  • 您需要证明@techLove 的建议不起作用。在他的代码中,按钮在单击时触发,并且控制台会记录相应的数组。

标签: jquery html arrays checkbox


【解决方案1】:

您的问题在这一行:

if ($chbx.is(':checked')) {

将该行更改为:

if ($(this).is(':checked')) {

您可以使用.map()Array.prototype.reduce() 而不是.each() 以获得所需的结果。记得使用.get() 来检索 $(":checkbox[name='advsrc']") 匹配的元素。

$("#bt1").click(function() {
    var checked = $(":checkbox[name='advsrc']").map(function(idx, ele) {
        return (ele.checked) ? 'ahmad' : 'null';
    }).get();
    console.log(checked);

    return false;
})

$("#bt2").click(function() {
    var checked = $(":checkbox[name='advsrc']").get().reduce(function(acc, ele, idx) {
        acc[ele.id || 'noId' + idx] = (ele.checked) ? 'a' : '';
        return acc;
    }, {});
    console.log(checked);

    return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<input id="bt1" type="button" value="button" />
<input id="bt2" type="button" value="buttonNew" />
<input id="grndsrc" type="checkbox" checked="checked" name="advsrc" />
<input id="fnamesrc" type="checkbox" name="advsrc" />
<input id="lnamesrc" type="checkbox" name="advsrc" />
<input id="dobsrc" type="checkbox" name="advsrc" />
<input id="telsrc" type="checkbox" name="advsrc" />
<input id="ssnsrc" type="checkbox" name="advsrc" />
<input  type="checkbox" name="advsrc" />

【讨论】:

  • 我如何返回 ele id 以及 'ahmad' 值?
  • @AhmadAbuMaizar 你可以构建一个对象数组:id + value
  • 非常感谢 gaetanoM,,,, @techlove 的感谢
  • @AhmadAbuMaizar 你很高兴
  • 抱歉 gaetanoM,我无法摆脱常量“id”和 val,,,我想要这样的数组,,,,{“grndsrc”:“a”,“fnamesrc”:” ","SnameSrctxt":"","TnameSrctxt":"","LnameSrctxt":"","TelSrcTxt":"","SSNSrcTxt":"","EmailSrctxt":"","DOBSrcTxt":"" }
猜你喜欢
  • 2012-07-24
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 2017-10-20
  • 2023-03-16
相关资源
最近更新 更多