jQuery更新Textarea而不替换内容

时间:2013-05-15 14:56:40

标签: jquery arrays checkbox textarea

在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

http://jsfiddle.net/GJXKW/3/

任何帮助将不胜感激。我想建立一个像4,5,3,4,24,2424,2的列表,在textarea结尾没有逗号会是奖金,但我会做正则表达式吗?

5 个答案:

答案 0 :(得分:4)

似乎没有人认识到这是在一个循环中,text()html()val()将覆盖每次迭代的内容。你真正需要做的就是在循环中集中字符串,并在循环后追加它一次:

function ExportButton(){
  var data = "";

  $('.mycb:checked').each(function(i,el) {
      data += el.value + ',';
  });

  $('#orders').text( data );
}

FIDDLE

答案 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的开销。