0

我有一个 Web 应用程序,我在其中使用页面加载时数据库中的项目填充多选列表框。

我从列表框中获取所有被选中的项目,但它们是按照它们填充的顺序排列的。

我希望这些项目按照用户选择的顺序排列。

所以对于这个问题,我在列表框中找到了使用客户端.click()事件的解决方案,因为我检测到选择的项目并将其值保留在隐藏字段中。这也很好,但是当用户按下回车键插入鼠标单击以选择项目时,问题就来了。此时它不会触发 .click() 事件,所以我使用过 onkeypress()onkeyup()但它根本不会触发

这是我的代码:

<script type="text/javascript">
    $(document).ready(function() {
        $(".chzn-results .active-result").click(function(event) {                                  
            var hdfld = document.getElementById("hdn_menuitems");
            if (hdfld.value == "") {
                hdfld.value = $(this).index();
            }
            else {
                hdfld.value = hdfld.value + "," + $(this).index();
            }                              
        });
        $(".chzn-results .active-result").keydown(function(event) {
            $(".chzn-results .active-result").keyup(function(event) {                               
                alert("Event");
                if(event.keyCode==13)
                {        
                    var hdfld = document.getElementById("hdn_menuitems");
                    if (hdfld.value == "") {
                        hdfld.value = $(this).index();
                    }
                    else {
                        hdfld.value = hdfld.value + "," + $(this).index();
                    }                        
                }
            });
        });    
</script>

这是我的列表框:

<asp:ListBox ID="dr_menuitem" runat="server" class="chzn-select" style="width:575px;" SelectionMode="Multiple" >
    <asp:ListItem></asp:ListItem>
</asp:Listbox>

我使用 [http://harvesthq.github.com/chosen/][1] 使用列表框

4

1 回答 1

0

这样做: -

$('.chzn-results .active-result').keydown(function(e) {
    if (e.keyCode == 13)
    {
        var hdfld = $('#hdn_menuitems');
        if (hdfld.value == "")
            $(hdfld).val($(this).index());
        else
            $(hdfld).val(hdfld.value + "," + $(this).index());
    }
});​
于 2012-07-13T15:00:18.823 回答