首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加和删除输入复选框的值

添加和删除输入复选框的值
EN

Stack Overflow用户
提问于 2018-06-28 10:07:29
回答 1查看 42关注 0票数 0

我编写的脚本允许用户选择复选框,并将所选框的值添加到输入中,并以逗号分隔。

代码语言:javascript
复制
$(document).ready(function() {
  var variable = 1
  $("#add").click(function() {
    var element = $(".test.hidden").clone(true);
    var testInputs = element.find(".testInputs").click(clickHandler);


    testInputs.attr("unique-index", variable);
    var target = element.find('.user_input2 #insert');
    target.attr("unique-identifier", variable)
    element.removeClass("hidden").appendTo(".paste:last");
    variable += 1;

  });

  function clickHandler() {
    console.log($(this).attr('unique-index'));
    const index = $(this).attr('unique-index')
    const targetsValue = $(`#insert[unique-identifier="${index}"]`).val();
    console.log('sup', targetsValue)
    const combo = targetsValue ? `${targetsValue}, ${$(this).val()}` : $(this).val()
    $(`#insert[unique-identifier="${index}"]`).attr('value', combo);
  }


  $(".test").keyup(function() {
    var test;
    console.log('sup')
    if ($(".test").is(":checked")) {

      test = $(".test").val();
    };

    $("#insert").val(test);

  });

  $("#testbtn").click(function() {
    $(".test").keyup();
  });

});
代码语言:javascript
复制
.hidden {
  display: none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Test</h2>

<button id="add">Add</button>

<div class="test hidden">

  <div class="user_input2">
    <table>
      <thead>
        <tr>
          <th>Pick Option</th>
        </tr>
      </thead>
      <tbody>
        <tr id="append">
          <td><input class="testInputs" name="test" value="1" type="checkbox">Option1</td>
          <td><input class="testInputs" name="test" value="2" type="checkbox">Option2</td>
          <td><input class="testInputs" name="test" value="3" type="checkbox">Option3</td>
        </tr>
      </tbody>
    </table>
    <input type="text" id="insert" name="check[]">
    <button class="hidden" id="testbtn">Calc</button>
  </div>
</div>



<div class="paste">
</div>

在取消复选框时,我似乎无法去除附加值。我需要识别复选框,然后根据选中的状态删除值。如果有人能帮忙,我会非常感激的。

附注:它也不应该允许值的重复,就像您不止一次按输入检查时所看到的那样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-28 10:19:05

您应该获得变更事件上的checked复选框值

代码语言:javascript
复制
//Added event listeners to element
$(document).on('change', '.testInputs', function () {
    //Target common ansestor
    var testContainer = $(this).closest('.test');
    //get checked checkboxes value in an array
    var checked = testContainer.find(':checked').map(function () {
            return this.value;
        }).get();

    //Target the textbox and set its value
    testContainer.find(".insert").val(checked.join(','));
});

另外,由于HTML中的标识符必须是唯一的,所以应该使用CSS类代替

代码语言:javascript
复制
<input type="text" class="insert" name="check[]">

代码语言:javascript
复制
$(document).ready(function() {
  var variable = 1
  $("#add").click(function() {
    var element = $(".test.hidden").clone(true);
    var testInputs = element.find(".testInputs").click(clickHandler);


    testInputs.attr("unique-index", variable);
    var target = element.find('.user_input2 #insert');
    target.attr("unique-identifier", variable)
    element.removeClass("hidden").appendTo(".paste:last");
    variable += 1;

  });

  function clickHandler() {
    const index = $(this).attr('unique-index')
    const targetsValue = $(`#insert[unique-identifier="${index}"]`).val();
    const combo = targetsValue ? `${targetsValue}, ${$(this).val()}` : $(this).val()
    $(`#insert[unique-identifier="${index}"]`).attr('value', combo);
  }
  
  //Added event listeners to element
  $(document).on('change', '.testInputs', function() {
    //Target common ansestor
    var testContainer = $(this).closest('.test');
    //get checked checkboxes value in an array
    var checked = testContainer.find(':checked').map(function() {
      return this.value;
    }).get();

    //Target the textbox and set its value
    testContainer.find(".insert").val(checked.join(','));
  });
});
代码语言:javascript
复制
.hidden {
  display: none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Test</h2>

<button id="add">Add</button>

<div class="test hidden">

  <div class="user_input2">
    <table>
      <thead>
        <tr>
          <th>Pick Option</th>
        </tr>
      </thead>
      <tbody>
        <tr id="append">
          <td><input class="testInputs" name="test" value="1" type="checkbox">Option1</td>
          <td><input class="testInputs" name="test" value="2" type="checkbox">Option2</td>
          <td><input class="testInputs" name="test" value="3" type="checkbox">Option3</td>
        </tr>
      </tbody>
    </table>
    <input type="text" class="insert" name="check[]">
    <button class="hidden" id="testbtn">Calc</button>
  </div>
</div>

<div class="paste">
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51080134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档