将多重选择作为逗号从选择框分隔为文本输入

时间:2015-01-21 14:00:45

标签: javascript html textinput multiple-select

我不知道js。我需要将多个选择以逗号分隔,从选择框分成文本输入。

纯js ,我发现只有这个问题与SO有关。 Multiple selections into input box

我在那个问题上尝试了js代码。 (问题js与接受的答案的组合)

然而我无法实现。

我需要的是例如在选择那些2并提交之后将澳大利亚,英格兰打印到文本输入中。

小提琴链接是:

http://jsfiddle.net/0k2m7gLo/

有趣的代码

HTML

<form>
    <select id="countries" multiple>
      <option value="val0">Australia</option>
      <option value="val1">England</option>
      <option value="val2">France</option>
    </select>
    <input type="button" value="Show Index" onclick="showSelected();" />
</form>
<p>selected countries by comma seperated</p>
<form><input type="text" id="txtText" /></form>

UNSUCCESSFUL JS

function showSelected()
{
    var selObj = document.getElementById('countries');
  var txtTextObj = document.getElementById('txtText');

  var selIndex = selObj.selectedIndex;
 txtTextObj.value += selObj.options[selIndex].text +', ';   
}

2 个答案:

答案 0 :(得分:2)

您可以这样做:

var selObj = document.getElementById('countries'),
    txtTextObj = document.getElementById('txtText'),
    selected = [];

for(var i = 0, l = selObj.options.length; i < l; i++){
    //Check if the option is selected
    if(selObj.options[i].selected){
        selected.push(selObj.options[i].textContent);
    }
} 
txtTextObj.value = selected.join(', ');

jsFiddle

答案 1 :(得分:2)

function updateSelected() {
  var select = document.getElementById('countries'),
      options = select.options,
      input = document.getElementById('selected');

  var selected = [];

  for (var i = 0, ii = options.length; i < ii; ++i) {
    var opt = options[i];

    if (opt.selected) {
      selected.push(opt.innerHTML);
    }
  }

  input.value = selected.join(', ');
}