jQuery:在输入文本字段中添加复选框的值

时间:2014-04-08 18:13:11

标签: javascript jquery html checkbox

我尝试将任何已选​​中复选框的值添加到输入文本字段。 这是我的小提琴:http://jsfiddle.net/Lf6ky/



$(document).ready(function() {
  $(":checkbox").on('click', function() {
    if ($(':checkbox:checked')) {
      var fields = $(":checkbox").val();
      jQuery.each(fields, function(i, field) {
        $('#field_results').val($('#field_results').val() + field.value + " ");
      });
    }
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<input type="text" id="field_results" /><br>

<input type="checkbox" value="1">1<br>
<input type="checkbox" value="2">2<br>
<input type="checkbox" value="3">3
&#13;
&#13;
&#13;

在这个例子中,我有3个复选框,值为1,2,3。如果我单击所有这些复选框,则输入字段应如下所示:1 2 3

如果我取消选中其中任何一个复选框,那么相应的值应该会在输入字段中消失。

我该怎么做?

4 个答案:

答案 0 :(得分:8)

我已将变量框的集合存储在变量$checks中,然后将处理程序附加到此集合中。在事件处理程序内部,我再次获取该集合并仅过滤(返回)已检查的复选框。

map()返回一个jQuery对象,其中包含已选中复选框的值,get()将其转换为标准数组。使用空格加入这些值并将“em”放入输入中。

&#13;
&#13;
$(document).ready(function(){
    $checks = $(":checkbox");
    $checks.on('change', function() {
        var string = $checks.filter(":checked").map(function(i,v){
            return this.value;
        }).get().join(" ");
        $('#field_results').val(string);
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="field_results"/><br>

<input type="checkbox" value="1">1<br>
<input type="checkbox" value="2">2<br>
<input type="checkbox" value="3">3
&#13;
&#13;
&#13;

答案 1 :(得分:2)

单击复选框后,循环选中已检查的输入,追加到字符串,然后将其分配给文本框:

&#13;
&#13;
$(document).ready(function() {
  $("input:checkbox").click(function() {
    var output = "";
    $("input:checked").each(function() {
      output += $(this).val() + " ";
    });
    $("#field_results").val(output.trim());
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<input type="text" id="field_results" /><br>

<input type="checkbox" value="1">1<br>
<input type="checkbox" value="2">2<br>
<input type="checkbox" value="3">3
&#13;
&#13;
&#13;

答案 2 :(得分:0)

第一个问题是

if($(':checkbox:checked')) {

将永远为true,因为它返回一个jQuery对象,而一个对象是一个真值。如果您要使用if,则需要检查长度。又名if($(':checkbox:checked').length) {

其次

var fields = $(":checkbox").val();

仅返回第一个元素的值,并返回任何复选框,而不仅仅是已选中的复选框。您想要遍历$(':checkbox:checked')

攻击它的一种方法是使用每个和一个数组。

$(":checkbox").on('change', function() {
    var total = [];
    $(':checkbox:checked').each( function(){  //find the checked checkboxes and loop through them
        total.push(this.value); //add the values to the array
    });        
    $('#field_results').val(total.join(" "));  //join the array
});

答案 3 :(得分:0)

问题

  1. if($(':checkbox:checked'))永远是真的
  2. var fields = $(":checkbox").val();将给出第一个复选框值
  3. 你可以试试这个。

    &#13;
    &#13;
    $(document).ready(function() {
      $(":checkbox").on('click', function() {
        var fields = '';
        $(":checkbox").each(function() {
          if (this.checked) {
            fields += $(this).val() + ' ';
          }
        });
        $('#field_results').val($.trim(fields))
      });
    });
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <input type="text" id="field_results" />
    <br>
    <input type="checkbox" value="1">1
    <br>
    <input type="checkbox" value="2">2
    <br>
    <input type="checkbox" value="3">3
    &#13;
    &#13;
    &#13;