Asmselect并使用Javascript更改选项的选定状态

时间:2013-06-20 00:20:06

标签: jquery dynamic selected asmselect

我试图在没有运气的情况下在asmselect中做一个相当简单的任务。

我使用asmselect有一个多选列表。最初没有选择任何选项。

<select multiple="multiple" id="myselectdiv" name="myselectdiv[]" title="choose">
<option value="0">zero</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>

Asmselect已正确初始化,当我手动选择时,我可以看到下面显示的项目。

我想使用Javascript或jQuery动态地将其中一个选项的选定状态更改为“selected”,而不单击该选项。这是非常基本的:

document.getElementById('myselectdiv').options[3].selected=true;

当我尝试在多选列表上执行此操作时,asmselect已初始化,没有任何反应。我希望javascript选择项目并让它显示在下方,就像使用asmselect手动点击它一样。

Safari 5和Firefox 21,MacOS上的问题相同。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

经过一些实验,我能够解决问题。我正在发布解决方案,以防有人遇到同样的问题。

文档描述了在文档加载时初始化asmSelect,例如:

$(document).ready(function() {
   $("select[multiple]").asmSelect({
   addItemTarget: 'bottom',
   animate: true,
   highlight: true,
   sortable: true
   });          
}); 

但是如果您计划使用javascript动态填充和/或更改所选项目,则在页面加载后,asmSelect需要在进行更改时取消初始化,然后重新初始化。例如:

function something() {
   [do some ajax]

   // remove the asmSelect attachment to the select list
   $(".asmSelect").remove(); $(".asmList").remove();

   //change some selections in the list with Javascript
   document.getElementById('myselectlist').options[3].selected=true;

   // re-initialize asmSelect
   $(document).ready(function() {
     $("select[multiple]").asmSelect({
     addItemTarget: 'bottom',
     animate: true,
     highlight: true,
     sortable: true
     });            
   }); 
}

总的来说,我对asmSelect非常满意,我希望这篇文章对其他人实施该工具很有帮助。