Javascript 将多个选择选项文本传递到文本区域

Javascript 将多个选择选项文本传递到文本区域,javascript,jquery,forms,Javascript,Jquery,Forms,我有一个表单,其中有几个选择框,其中一些是多个选择框。到目前为止,我能够将文本值从每个选择框传递到文本区域;但是,我无法从多个选择框中传递多个选项。有人能帮忙吗?也就是说,我希望在多个选择框中传递所有选定的文本,而不仅仅是选择中的第一项 我的代码一直返回“未定义”。在搜索这些论坛时,似乎使用jQuery“option:selected”修饰符应该返回所有选定项目的文本 function writeText(){ // get assign the values from each text in

我有一个表单,其中有几个选择框,其中一些是多个选择框。到目前为止,我能够将文本值从每个选择框传递到文本区域;但是,我无法从多个选择框中传递多个选项。有人能帮忙吗?也就是说,我希望在多个选择框中传递所有选定的文本,而不仅仅是选择中的第一项

我的代码一直返回“未定义”。在搜索这些论坛时,似乎使用jQuery“option:selected”修饰符应该返回所有选定项目的文本

function writeText(){
// get assign the values from each text input
var myCAPtext = document.getElementById('CAPoutput');

// assign multiple text values
var select_1 = $("#box1 option:selected").text();

var  CAPtext = select_1.value+"\n\n";
  myCAPtext.value = CAPtext;
  }
HTML


第一个文本
第二文本
第三文本
第四文本


text
返回字符串,字符串对象没有
value
属性,使用jQuery
val
方法,它为多个选择元素返回一个值数组,然后可以使用数组对象的
join
方法连接数组的元素:

var select_1 = $("#box1").val();
var CAPtext = select_1.join("\n\n");

如果您想告别
onclick
attributes:

$('input[type=button]').click(function () {
    var myCAPtext = document.getElementById('CAPoutput');
    myCAPtext.value = $("#box1").val().join("\n\n");
})

+1,似乎没有多少人注意到
val()
返回了一个多值数组。感谢您对解决方案的详细解释。这真的有助于像我这样的新手变得更好。出于好奇,如果我在表单中添加了复选框或文本输入,我是否可以使用相同的语法结构将字符串值传递给文本框?@user1837608嗨,不客气,是的,但是对于那些元素
val
返回一个
string
,因此您不能使用
join
方法。如果您不介意的话,还有一个问题。当我完成表单时,我意识到有一些select元素应该是可选的。如何最好地包含这些“可选”选择项,但如果不需要,则忽略它们?我想把它和一个复选框联系起来,这个复选框提醒写函数在复选框之后包含任何selectbox?jQuery中是否已经构建了更简单的功能?
$('input[type=button]').click(function () {
    var myCAPtext = document.getElementById('CAPoutput');
    myCAPtext.value = $("#box1").val().join("\n\n");
})