我正在尝试为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>
答案 0 :(得分:3)
由于第一个下拉列表不是多重选择,并且它只能有一个选定项目,因此DOM将被标准化,只有一个选项将selected
属性设置为true
。
似乎在复制它们时,属性仍然存在,因此您必须阅读它并相应地设置selected
属性。
从未使用Prototype,但我想出了类似的东西:
$('test1').childElements().each(function(option){
$('test2').insert(option);
option.selected = $(option).readAttribute('selected');
});
jsFiddle - 仅在Chrome中测试