在JavaScript中,您只需使用=.
或+=
将现有数据添加到数据中。我如何在jQuery中执行此操作。我正在尝试在表单中添加一个复选框列表,每个字段都应该在textarea中建立一个用逗号分隔数据的列表。
无法想象。它只是替换q
值而不添加。
的jQuery
function ExportButton(){
var data = $('#orders').text();
var selected = new Array();
$('.mycb:checked').each(function() {
var q = $(this).attr('value');
alert(q);
$('#orders').text(data+q+',');
});
}
HTML
<div><input type="checkbox" id="mycb2" class="mycb" value="Chocolate" /> Chocolate</div>
<div><input type="checkbox" id="mycb1" class="mycb" value="Vanilla" /> Vanilla</div>
<a href="javascript:ExportButton()">Export to Textarea</a>
<textarea rows="10" cols="80" id="orders" name="orders"></textarea>
的jsfiddle
任何帮助将不胜感激。我想建立一个像4,5,3,4,24,2424,2的列表,在textarea结尾没有逗号会是奖金,但我会做正则表达式吗?
答案 0 :(得分:4)
似乎没有人认识到这是在一个循环中,text()
,html()
和val()
将覆盖每次迭代的内容。你真正需要做的就是在循环中集中字符串,并在循环后追加它一次:
function ExportButton(){
var data = "";
$('.mycb:checked').each(function(i,el) {
data += el.value + ',';
});
$('#orders').text( data );
}
答案 1 :(得分:1)
使用.val
代替.text
jsFiddle
function ExportButton(){
var data;
var selected = new Array();
$('.mycb:checked').each(function() {
var q = $(this).attr('value');
data = $('#orders').val();
if(data ){
data = data + "," +q
}else {
data = q
}
$('#orders').val(data);
});
}
答案 2 :(得分:0)
这只是因为jQuery无法识别text()
的{{1}}。就像输入字段一样,您可以使用<textarea>
函数:
val()
答案 3 :(得分:0)
请参阅此http://jsfiddle.net/steelywing/GJXKW/8/
$('#export').click(function () {
var checked = [];
$('input:checked').each(function () {
checked.push($(this).val());
});
$('textarea').val(checked.join(','));
});
答案 4 :(得分:-1)
你总是可以混合使用jQuery和vanilla JS,所以如果你有一些有用的东西,那就去做吧,不要为简单的文本节点追加jQuery的开销。