使用JS或JQuery,使用jQuery的listselect.js将所有选择从一个列表移动到“selected”

时间:2013-08-22 11:43:48

标签: javascript jquery html

我在jsp文件中有一个struts select部分,它成为标准HTML选择:

        <s:select
            id="selectedTillsSelectId"
            name="selectedTillsSelectName"
            cssClass="tillDropDownEntryList"
            list="tillDropDownEntryList"
            listKey="key"
            listValue="value"
            value="%{selectedTills}"
            />

变成

<select name="selectedTillsSelectName" id="selectedTillsSelectId" class="tillDropDownEntryList">
  <option value="1">0001</option>
  <option value="2">0002</option>
  <option value="3">0003</option>
  <option value="4">0004</option>
  <option value="5">0005</option>
  <option value="6">0006</option>
  <option value="7">0007</option>
  <option value="8">0008</option>
</select>

我的理解是struts只是填充了列表,并且可以忘记struts是从那一点开始涉及的。

然后显示为拆分列表

All              Selected
0001             
0002
0003
0004
0005
0006
0007
0008

感谢listselect jquery:

<script type="text/javascript" src="<s:url value="/js/jQuery/jquery-1.4.2.min.js"/>"></script>
<script type="text/javascript" src="<s:url value="/js/jQuery/listselect.js"/>"></script>

这是我已被要求修改的所有预先存在的工作代码。当您单击左侧的单个项目时,它将移动到右侧的“选定”列中。单击0003会导致:

All              Selected
0001             0003
0002
0004
0005
0006
0007
0008

我的任务是添加一个按钮,将所有内容移动到所选列,“全选”按钮。

我已经添加了按钮,这可以正常工作,但是我不能让它做我想要的。我可以将选项放入列表中,我可以迭代地“选择”它们 - 但所有这一切都突出了条目。我想实际将条目移动到第二列。任何试图点击列表项目的任何尝试都没有做任何事情或无效,我已经尝试了在线建议中可以找到的每个排列,当你看到我的“全选”功能的当前状态时,这可能会变得明显:(请记住,我保留了已注释的版本,主要是为了帮助提醒我我尝试过的内容,但我认为它们可以很好地说明我的内容)

function selectAllTills() 
{
//    alert("Select all the Tills..."); 
    var bothLists = document.getElementsByTagName("select");
    var unselectedList = bothLists[0];
    var selectedList = bothLists[1];
    var allOptions = unselectedList.getElementsByTagName("option");
    for (var i=0; i < allOptions.length; i++) {
//            allOptions[i].selected = true;
//      allOptions[i].attr('selected', 'selected');
//      allOptions[i].selected = true;
//      $("#selectedTills").val(i).attr("selected","selected");
//      alert("allOpions is" + allOptions[i]);
//      selectedList.val(allOptions[i]);
      $("#selectedTillsSelectId").val(allOptions[i]);
    }

//    $("#selectedTillsSelectId").find("option").appendTo(".tillDropDownEntryList"); //tried based on nnnnnn's suggestion

//    $("div#tillSelectionDiv select option").each(function(){
//        $(this).attr("selected","selected");
//      $(this).trigger("click");
//      $(this).click();
//      alert($(this));
//    });

}

我想在这一点上我承认在这一点上并没有真正使用javascript。我是一个java程序员,所以理解OOP,我可以阅读我在页面中看到的大部分内容,这是有道理的。 Firebug建议我迭代的项目是HTMLElementOption听起来是正确的,并且使用jQuery据说我可以在元素上调用“click”但是这不起作用......如上所述,迭代并设置所选的 在选择项目方面做了什么,但它只是让项目在左边是蓝色而不是移动它,如果这是一个标准的下拉列表而不是jQuery listselect,我认为会很好。

如果我遗漏了任何错误,请大家给予任何帮助,请在评论中告诉我,以便我可以修改这个问题。

非常感谢, 米奇。

1 个答案:

答案 0 :(得分:2)

我不知道listselect.js是如何做的,但是要将所有选项元素从第一个选择元素移动到第二个选项元素,你可以使用一行jQuery来完成它。只需将以下内容放入您单击“全部移动”按钮时调用的任何功能中:

$("#selectedTillsSelectId").find("option").appendTo("#idOfSecondSelectHere");

演示:http://jsfiddle.net/AHn7Z/

我假设第二个选择元素的ID可以包含在.appendTo()中。