Javascript 将所选选项添加到逗号的文本区域分隔符

Javascript 将所选选项添加到逗号的文本区域分隔符,javascript,jquery,html,select,textarea,Javascript,Jquery,Html,Select,Textarea,你能帮我记录下这个例子吗 我有以下几点: 我需要在添加textarea并用逗号分隔时选择一个选项,例如: select, textarea { display: block; width: 12em; box-sizing: border-box; margin: 0 0 1.5em 0; } 在这里,我选择一次选项: 稍后,必须将此选项添加到文本区域,其中一些选项如下: 在其他选择中,当我选择其他选项时,执行相同的操作: 等等,我可以帮忙,谢谢 HT

你能帮我记录下这个例子吗

我有以下几点:

我需要在添加textarea并用逗号分隔时选择一个选项,例如:

select, textarea {
    display: block;
    width: 12em;
    box-sizing: border-box;
    margin: 0 0 1.5em 0;
}
在这里,我选择一次选项:

稍后,必须将此选项添加到文本区域,其中一些选项如下:

在其他选择中,当我选择其他选项时,执行相同的操作:

等等,我可以帮忙,谢谢

HTML是:

    <select id="filter" name="filter">
    <option id="A" value="A">Option1</option>
    <option id="B" value="B">Option2</option>
    <option id="C" value="C">Option3</option>
    <option id="D" value="D">Option4</option>
</select>
<textarea name="key" id="field"></textarea>
<br>
<br>
<select id="filter2" name="filter2">
    <option id="A" value="A">Option1</option>
    <option id="B" value="B">Option2</option>
    <option id="C" value="C">Option3</option>
    <option id="D" value="D">Option4</option>
</select>
<br>
<br>
<select id="filter3" name="filter3">
    <option id="A" value="A">Option1</option>
    <option id="B" value="B">Option2</option>
    <option id="C" value="C">Option3</option>
    <option id="D" value="D">Option4</option>
</select>

选择1
选择2
选择3
选择4


选择1 选择2 选择3 选择4

选择1 选择2 选择3 选择4
演示:

顺便说一下,HTML中有重复的
id
s,这是无效的

var $texta = $('#field');
var $selects = $('select');
$selects.change(function () {
    var opts = $selects.find('option:selected').map(function () {
        return $.trim($(this).text());
    }).get();
    $texta.val(opts.join())
}).change();
演示:

顺便说一下,HTML中有重复的
id
s,这是无效的

var $texta = $('#field');
var $selects = $('select');
$selects.change(function () {
    var opts = $selects.find('option:selected').map(function () {
        return $.trim($(this).text());
    }).get();
    $texta.val(opts.join())
}).change();
演示:

顺便说一下,HTML中有重复的
id
s,这是无效的

var $texta = $('#field');
var $selects = $('select');
$selects.change(function () {
    var opts = $selects.find('option:selected').map(function () {
        return $.trim($(this).text());
    }).get();
    $texta.val(opts.join())
}).change();
演示:

顺便说一下,HTML中有重复的
id
s,这是无效的

var $texta = $('#field');
var $selects = $('select');
$selects.change(function () {
    var opts = $selects.find('option:selected').map(function () {
        return $.trim($(this).text());
    }).get();
    $texta.val(opts.join())
}).change();
演示:

演示:

演示:


演示:

我建议使用类名来关联相关的
选择
元素(在本例中,我使用了
class=“selectFilters”
),从而生成以下jQuery:

$('.selectFilters').on('change', function(){
    $('#field').val(function(){
        return $('.selectFilters').map(function(){
            return $(this).find('option:selected').text();
        }).get().join(', ') + '.';
    });
});

但是,如果您只想获取用户已更改的值,可以在这些元素上设置一个属性,最初设置为
false
,该属性可以跟踪这些元素是否已被修改(在本例中,适当地调用
modified
):

为了允许用户打开
选择
,然后确定默认选项是最佳选择,我还使用了
模糊
功能(不是为了允许
文本区域
选项
更改后立即更新):

顺便说一句,您必须避免HTML中重复的
id
属性(一个
id
在整个文档中只能使用一次才能有效),此外,尽管HTML5允许
id
以数字字符开头,但在CSS中选择这些元素仍然很困难(对于
选项
元素,这不是问题,因为CSS对它们没有/不能做太多;对于其他元素,这更是一个问题)

此外,您正在使用大量HTML来设置内容的样式(主要是

元素);不要:HTML应该显示内容,CSS应该设置样式。例如:

select, textarea {
    display: block;
    width: 12em;
    box-sizing: border-box;
    margin: 0 0 1.5em 0;
}

参考资料:


我建议使用类名来关联相关的
select
元素(在本例中,我使用了
class=“selectFilters”
),从而生成以下jQuery:

$('.selectFilters').on('change', function(){
    $('#field').val(function(){
        return $('.selectFilters').map(function(){
            return $(this).find('option:selected').text();
        }).get().join(', ') + '.';
    });
});

但是,如果您只想获取用户已更改的值,可以在这些元素上设置一个属性,最初设置为
false
,该属性可以跟踪这些元素是否已被修改(在本例中,适当地调用
modified
):

为了允许用户打开
选择
,然后确定默认选项是最佳选择,我还使用了
模糊
功能(不是为了允许
文本区域
选项
更改后立即更新):

顺便说一句,您必须避免HTML中重复的
id
属性(一个
id
在整个文档中只能使用一次才能有效),此外,尽管HTML5允许
id
以数字字符开头,但在CSS中选择这些元素仍然很困难(对于
选项
元素,这不是问题,因为CSS对它们没有/不能做太多;对于其他元素,这更是一个问题)

此外,您正在使用大量HTML来设置内容的样式(主要是

元素);不要:HTML应该显示内容,CSS应该设置样式。例如:

select, textarea {
    display: block;
    width: 12em;
    box-sizing: border-box;
    margin: 0 0 1.5em 0;
}

参考资料:


我建议使用类名来关联相关的
select
元素(在本例中,我使用了
class=“selectFilters”
),从而生成以下jQuery:

$('.selectFilters').on('change', function(){
    $('#field').val(function(){
        return $('.selectFilters').map(function(){
            return $(this).find('option:selected').text();
        }).get().join(', ') + '.';
    });
});

但是,如果您只想获取用户已更改的值,可以在这些元素上设置一个属性,最初设置为
false
,该属性可以跟踪这些元素是否已被修改(在本例中,适当地调用
modified
):

为了允许用户打开
选择
,然后确定默认选项是最佳选择,我还使用了
模糊
功能(不是为了允许
文本区域
选项
更改后立即更新):

顺便说一句,您必须避免HTML中重复的
id
属性(一个
id
在整个文档中只能使用一次才能有效),此外,尽管HTML5允许
id
以数字字符开头,但在CSS中选择这些元素仍然很困难(对于
选项
元素,这不是问题,因为CSS对它们没有/不能做太多;对于其他元素,这更是一个问题)

此外,您正在使用大量HTML来设置内容的样式(主要是

元素);不要:HTML应该显示内容,CSS应该设置样式。例如:

select, textarea {
    display: block;
    width: 12em;
    box-sizing: border-box;
    margin: 0 0 1.5em 0;
}

参考资料:


我建议使用类名来关联相关的
选择
元素(在本例中,我使用了