将选项从<select>移动到</select> - 选项选择属性是否正在破坏?

时间:2012-10-19 23:04:27

标签: javascript html drop-down-menu prototypejs dom-manipulation

我正在尝试为Prototype编写一个插件,用户点击下拉列表并用多选元素替换它。我快完成了。在用户选择他们想要显示的内容之前,一切都很有效,并将表单提交到同一页面。我使用PHP来保留用户选择的内容,使用selected标记的<option>属性。所以我的插件在那之后运行并将选项复制到多选,这就是问题所在。假设用户选择了3个项目,在多选的html代码中所有3个项目都会有{{ 1}}属性,但只有最后一个会被突出显示,当在那一点重新提交表单时,它实际上只提交突出显示的那个。 Here is a demo.任何有关这方面的帮助都会很棒。感谢。

HTML

selected

的JavaScript

<select id="test1">
    <option>Option 1</option>
    <option selected="selected">Option 2</option>
    <option selected="selected">Option 3</option>
</select>

<select id="test2" multiple="multiple">
</select>​

1 个答案:

答案 0 :(得分:3)

由于第一个下拉列表不是多重选择,并且它只能有一个选定项目,因此DOM将被标准化,只有一个选项将selected属性设置为true

似乎在复制它们时,属性仍然存在,因此您必须阅读它并相应地设置selected属性。

从未使用Prototype,但我想出了类似的东西:

$('test1').childElements().each(function(option){
    $('test2').insert(option);
    option.selected = $(option).readAttribute('selected');
});

jsFiddle - 仅在Chrome中测试