如何使用jQuery获取选中的复选框值,并立即将其放入textarea?
就像这段代码:
<html>
<head>
</head>
<body>
<div id="c_b">
<input type="checkbox" value="one_name" checked>
<input type="checkbox" value="one_name1">
<input type="checkbox" value="one_name2">
</div>
<textarea id="t"></textarea>
</body>
</html>
如果id="c_d"
由Ajax更新,则altCognito代码的下方不起作用。有什么好的解决方案吗?
答案 0 :(得分:313)
这是一个有效的(see the example):
function updateTextArea() {
var allVals = [];
$('#c_b :checked').each(function() {
allVals.push($(this).val());
});
$('#t').val(allVals);
}
$(function() {
$('#c_b input').click(updateTextArea);
updateTextArea();
});
几个月后,如果ID发生变化,还会询问如何保持上述工作的另一个问题。好吧,解决方案归结为将updateTextArea函数映射到使用CSS类的通用函数,并使用live函数监视DOM以获取这些更改。
答案 1 :(得分:119)
您还可以在逗号分隔的字符串中返回所有选中的复选框值。 当您将其作为参数发送到SQL
时,这也将使您更容易以下是一个示例,它返回所有选中的复选框值,其名称为“chkboxName”,以逗号分隔字符串
这是javascript
function showSelectedValues()
{
alert($("input[name=chkboxName]:checked").map(
function () {return this.value;}).get().join(","));
}
以下是HTML示例
<html>
<head>
</head>
<body>
<div>
<input name="chkboxName" type="checkbox" value="one_name" checked>
<input name="chkboxName" type="checkbox" value="one_name1">
<input name="chkboxName" type="checkbox" value="one_name2">
</div>
</body>
</html>
答案 2 :(得分:63)
你的问题很模糊,但我认为这就是你所需要的:
$(function() {
$('input[type="checkbox"]').bind('click',function() {
if($(this).is(':checked')) {
$('#some_textarea').html($(this).val());
}
});
});
编辑:哦,好的..你去了...你以前没有HTML。无论如何,是的,我认为你的意思是在点击时将值放在textarea中。如果您希望在页面加载时将选中的复选框的值放入textarea(可能带有一个很好的逗号分隔),它将非常简单:
$(function() {
$('#c_b input[type="checkbox"]:checked').each(function() {
$('#t').append(', '+$(this).val());
});
});
编辑2 正如人们所做的那样,你也可以这样做来快捷我写的冗长的选择器:
$('#c_b :checkbox:checked').each(function() {
$('#t').append(', '+$(this).val());
});
......我完全忘记了那条捷径。 ;)
答案 3 :(得分:48)
这对我很有用:
alert($("input[name=chkboxName]:checked").map(function() {
return this.value;
}).get().join(","));
感谢Mohamed ElSheikh
答案 4 :(得分:8)
感谢altCognito,您的解决方案有所帮助。我们也可以使用复选框的名称来执行此操作:
function updateTextArea() {
var allVals = [];
$('[name=chkbox]:checked').each(function() {
allVals.push($(this).val());
});
$('#t').val(allVals)
}
$(function() {
$('#c_b input').click(updateTextArea);
updateTextArea();
});
答案 5 :(得分:6)
以下内容可能非常有用,因为我在这里寻找的是一个稍微不同的解决方案。我的脚本需要自动循环输入元素并且必须返回它们的值(对于jQuery.post()函数),问题是复选框返回它们的值而不管检查状态如何。这是我的解决方案:
jQuery.fn.input_val = function(){
if(jQuery(this).is("input[type=checkbox]")) {
if(jQuery(this).is(":checked")) {
return jQuery(this).val();
} else {
return false;
}
} else {
return jQuery(this).val();
}
};
用法:
jQuery(".element").input_val();
如果给定的输入字段是复选框,则input_val函数仅在其选中时返回值。对于所有其他元素,无论选中状态如何,都会返回该值。
答案 6 :(得分:5)
如果您需要将值保存到变量,可以使用以下选项:
var _t = $('#c_b :checkbox:checked').map(function() {
return $(this).val();
});
$('#t').append(_t.join(','));
(map()返回一个数组,我发现它比textarea中的文本更方便。)
答案 7 :(得分:3)
$(document).ready(function() {
$(':checkbox').click(function(){
var cObj = $(this);
var cVal = cObj.val();
var tObj = $('#t');
var tVal = tObj.val();
if( cObj.attr("checked")) {
tVal = tVal + "," + cVal;
$('#t').attr("value", tVal);
} else {
//TODO remove unchecked value.
}
});
});
答案 8 :(得分:3)
function updateTextArea() {
var allVals = $('#c_b :checked').map(function() {
return $(this).val();
}).get();
$('#t').val(allVals)
}
$(function() {
$('#c_b input').click(updateTextArea);
updateTextArea();
});
答案 9 :(得分:2)
$("#t").text($("#cb").find(":checked").val())
答案 10 :(得分:2)
无论如何,你可能需要这样的东西:
var val = $('#c_b :checkbox').is(':checked').val();
$('#t').val( val );
这将获取页面上第一个选中复选框的值,并将其插入带有id='textarea'
的textarea中。
请注意,在示例代码中,您应该将复选框放在表单中。
答案 11 :(得分:2)
使用其他帖子的答案,我用来完成相同的更容易和更短的方式是这样的:
var checkedCities = $('input[name=city]:checked').map(function() {
return this.value;
}).get();
最初城市是从MySQL数据库中检索出来的,并在循环中循环使用PHP:
while ($data = mysql_fetch_assoc($all_cities)) {
<input class="city" name="city" id="<?php echo $data['city_name']; ?>" type="checkbox" value="<?php echo $data['city_id']; ?>" /><?php echo $data['city_name']; ?><br />
<?php } ?>
现在,使用上面的jQuery代码,我得到所有的city_id值,并使用$ .get(...)
提交回数据库这使我的生活如此简单,因为现在代码是完全动态的。为了添加更多城市,我需要做的就是在我的数据库中添加更多城市,而不用担心PHP或jQuery结束。
答案 12 :(得分:0)
如果您想在检查时立即插入任何复选框的值,那么这应该适合您:
$(":checkbox").click(function(){
$("#id").text(this.value)
})
答案 13 :(得分:0)
我遇到了类似的问题,这就是我用上面的例子解决它的方法:
$(".ms-drop").click(function () {
$(function showSelectedValues() {
alert($(".ms-drop input[type=checkbox]:checked").map(
function () { return this.value; }).get().join(","));
});
});
答案 14 :(得分:0)
试试这个..
var listCheck = [];
console.log($("input[name='YourCheckBokName[]']"));
$("input[name='YourCheckBokName[]']:checked").each(function() {
console.log($(this).val());
listCheck .push($(this).val());
});
console.log(listCheck);