0

我试图在 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 将选项之一的选定状态动态更改为“选定”,而无需单击该选项。这真的很基本:

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

当我尝试在多个选择列表上执行此操作时,初始化 asmselect 时,什么也没有发生。我希望 javascript 选择该项目并将其显示在下方,就像使用 asmselect 手动单击它时一样。

Safari 5 和 Firefox 21、MacOS 也有同样的问题。任何帮助表示赞赏。

4

1 回答 1

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 非常满意,我希望这篇文章对其他实施该工具的人有所帮助。

于 2013-06-21T00:19:43.100 回答