我尝试将任何已选中复选框的值添加到输入文本字段。 这是我的小提琴: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;
在这个例子中,我有3个复选框,值为1,2,3。如果我单击所有这些复选框,则输入字段应如下所示:1 2 3
如果我取消选中其中任何一个复选框,那么相应的值应该会在输入字段中消失。
我该怎么做?
答案 0 :(得分:8)
我已将变量框的集合存储在变量$checks
中,然后将处理程序附加到此集合中。在事件处理程序内部,我再次获取该集合并仅过滤(返回)已检查的复选框。
map()
返回一个jQuery对象,其中包含已选中复选框的值,get()
将其转换为标准数组。使用空格加入这些值并将“em”放入输入中。
$(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;
答案 1 :(得分:2)
单击复选框后,循环选中已检查的输入,追加到字符串,然后将其分配给文本框:
$(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;
答案 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)
问题
if($(':checkbox:checked'))
永远是真的var fields = $(":checkbox").val();
将给出第一个复选框值你可以试试这个。
$(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;