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";
})
}