Javascript .join(),或者,如果您根本不需要数组形式的值,可以将它们直接连接为字符串

Javascript .join(),或者,如果您根本不需要数组形式的值,可以将它们直接连接为字符串,javascript,Javascript,我还实现了您的请求,通过使用data()保存初始值,可以在下面的代码段中保留初始值。(您可能希望跳过忽略第一个换行符的检查——编辑:我实现了一个动态检查,以查看初始textarea值是否为空) 函数updateTextArea(){ var allVals=$('#form1')。数据('initialVal'), 行数=1; $('.taglist:checked')。每个(函数(i){ allVals+=(i!=0 | | allVals.length>0?\r\n:“)+$(this.v

我还实现了您的请求,通过使用
data()
保存初始值,可以在下面的代码段中保留初始值。(您可能希望跳过忽略第一个换行符的检查——编辑:我实现了一个动态检查,以查看初始textarea值是否为空)

函数updateTextArea(){
var allVals=$('#form1')。数据('initialVal'),
行数=1;
$('.taglist:checked')。每个(函数(i){
allVals+=(i!=0 | | allVals.length>0?\r\n:“)+$(this.val();
lineCount++;
});
$('#form1').val(allVals.attr('rows',lineCount));
}
$(函数(){
$('.taglist input')。单击(updateTextArea);
$('form1').data('initialVal',$('form1').val());
updateTextArea();
});

我的文本在这里
值1
价值2
价值3
价值4
价值5

如果将数组设置为
val()
的参数,它将隐式转换为逗号分隔的字符串。您可以使用
allVals.join()
连接数组,或者,如果您根本不需要数组形式的值,可以将它们直接连接为字符串

我还实现了您的请求,通过使用
data()
保存初始值,可以在下面的代码段中保留初始值。(您可能希望跳过忽略第一个换行符的检查——编辑:我实现了一个动态检查,以查看初始textarea值是否为空)

函数updateTextArea(){
var allVals=$('#form1')。数据('initialVal'),
行数=1;
$('.taglist:checked')。每个(函数(i){
allVals+=(i!=0 | | allVals.length>0?\r\n:“)+$(this.val();
lineCount++;
});
$('#form1').val(allVals.attr('rows',lineCount));
}
$(函数(){
$('.taglist input')。单击(updateTextArea);
$('form1').data('initialVal',$('form1').val());
updateTextArea();
});

我的文本在这里
值1
价值2
价值3
价值4
价值5
您可以尝试:

您可以尝试:


非常感谢您抽出时间。javascript的新特性。知道如何预加载文本吗?@Greg如果您想保留最初指定的文本,可以在将其写入
textarea
之前将其添加到数组中,我为此添加了一个示例。非常感谢您抽出时间。javascript的新特性。知道如何预加载文本吗?@Greg如果您想保留最初指定的文本,可以在将其写入
textarea
之前将其添加到数组中,我为此添加了一个示例。@Connum太好了!非常感谢您的帮助。@如果您的代码段不起作用,请打开代码段并选中
Value 1
,它只删除换行符,但不会将
Value 1
添加到文本区域。取消选中
值1
并选中
值2
相同的问题。-如果在打开代码段后先检查
Value 1
,然后再检查
Value 2
,则会显示
Value 1
,但不会显示
Value 2
行中出现错误,这很可能是因为添加的值没有正确调整文本区域的大小。这对我来说非常有效。您使用的浏览器是什么?@Connum我使用的是Chrome-我更新了我以前的评论,似乎是Chrome中拧入了textarea重新调整大小。调整大小是在原始代码中:
$('#form1').val(allVals.attr('rows',allVals.length)但正如我现在看到的,它是基于
.length
,它是基于1的,而不是基于0的,所以我只是在我的代码片段中调整它以
1
开始。现在一切都好了。:@康纳姆,太好了!非常感谢您的帮助。@如果您的代码段不起作用,请打开代码段并选中
Value 1
,它只删除换行符,但不会将
Value 1
添加到文本区域。取消选中
值1
并选中
值2
相同的问题。-如果在打开代码段后先检查
Value 1
,然后再检查
Value 2
,则会显示
Value 1
,但不会显示
Value 2
行中出现错误,这很可能是因为添加的值没有正确调整文本区域的大小。这对我来说非常有效。您使用的浏览器是什么?@Connum我使用的是Chrome-我更新了我以前的评论,似乎是Chrome中拧入了textarea重新调整大小。调整大小是在原始代码中:
$('#form1').val(allVals.attr('rows',allVals.length)但正如我现在看到的,它是基于
.length
,它是基于1的,而不是基于0的,所以我只是在我的代码片段中调整它以
1
开始。现在一切都好了
    var text_initial = document.querySelector('#form1').value  + "\r\n";

function checkboxsListen() {
  var checks = document.querySelectorAll('.taglist input[type="checkbox"]');

  Array.prototype.forEach.call(checks, function(check) {

    check.addEventListener('change', function() {
      updateTextArea();
    })

  })
}

checkboxsListen();

function updateTextArea() {
  var textarea = document.querySelector('#form1')
  textarea.value = text_initial;
  var checks_selected = document.querySelectorAll('.taglist input[type="checkbox"]:checked');

  Array.prototype.forEach.call(checks_selected, function(check) {
    textarea.value += check.value + "\r\n";
  })
}