Javascript选择多个选项

Dav*_*unt 18 javascript forms html-select options

我有一个带有选择框的表单,允许多个选项.用户保存这些选项后,会将它们存储在数据库表中.

然后,我可以读取此数据库表以获取他们再次选择的选项.我需要能够从数据库中获取这些数据,将其放入一个数组中,然后在他们选择"编辑"他们的选项时,在该选择框中选择预先选择的选项.

将数据读入数组很好,我知道如何在选择框中选择一个选项,但是我不知道如何处理在javascript中选择的多个选项.

有人可以帮我找出执行此操作所需的JavaScript吗?

Pet*_*ley 23

一个纯粹的JavaScript解决方案

<select id="choice" multiple="multiple">
  <option value="1">One</option>
  <option value="2">two</option>
  <option value="3">three</option>
</select>
<script type="text/javascript">

var optionsToSelect = ['One', 'three'];
var select = document.getElementById( 'choice' );

for ( var i = 0, l = select.options.length, o; i < l; i++ )
{
  o = select.options[i];
  if ( optionsToSelect.indexOf( o.text ) != -1 )
  {
    o.selected = true;
  }
}

</script>
Run Code Online (Sandbox Code Playgroud)

虽然我同意这应该在服务器端完成.


Sam*_*son 5

这种类型的事情应该在服务器端完成,以便限制客户端上用于此类琐碎任务的资源量。话虽这么说,如果您要在前端执行此操作,我鼓励您考虑使用像underscore.js这样的东西来保持代码干净简洁:

var values = ["Red", "Green"],
    colors = document.getElementById("colors");

_.each(colors.options, function (option) {
    option.selected = ~_.indexOf(values, option.text);
});
Run Code Online (Sandbox Code Playgroud)

如果您使用 jQuery,它可能会更简洁:

var values = ["Red", "Green"];

$("#colors option").prop("selected", function () {
    return ~$.inArray(this.text, values);
});
Run Code Online (Sandbox Code Playgroud)

如果您在没有像 underscore.js 或 jQuery 这样的工具的情况下执行此操作,您将需要编写更多内容,并且可能会发现它有点复杂:

var color, i, j,
    values = ["Red", "Green"],
    options = document.getElementById("colors").options;

for ( i = 0; i < values.length; i++ ) {
    for ( j = 0, color = values[i]; j < options.length; j++ ) {
        options[j].selected = options[j].selected || color === options[j].text;
    }
}
Run Code Online (Sandbox Code Playgroud)