0

我的页面上有一个使用 asmselect 的多选,效果非常好。

我正在尝试向页面添加另一个多选,但遇到问题。大约有 11,000 个选项会导致 asmselect 永远加载,因为它在 asmselect jquery 代码中循环遍历整个列表。即使我可以改善加载时间,用户也很难浏览整个列表以找到他们的选项。

我的想法是添加会弹出一个对话框的按钮(我成功地在页面上的其他位置使用对话框来添加选项以选择列表),用户可以在其中输入一些过滤器信息,然后可以从过滤后的列表中进行选择。因此,他们输入 101 并列出选项“10100”、“22101”、“31015”等。他们选择“10100”。“10100”显示在选定的主屏幕上。然后他们可以再次点击按钮并输入“105”,这将为他们提供一个新的过滤选择列表,然后他们选择“10500”,该列表现在与“10100”一起显示在主屏幕上。

第一个问题,有没有更好的方法来处理这个问题?

其次,我可以使用 asmselect 的格式来显示我新选择的项目,以便它与我的其他 asmselect 的格式匹配,并使用带有“删除”的内置功能来取消选择项目。我正在查看 asmselect 代码,但我的 jquery 知识非常有限,我无法弄清楚。有人能指出我正确的方向吗?

4

1 回答 1

0

我通过使用droplistFilter 插件在对话框中有一个选项的下拉列表来实现这一点。当从下拉列表中选择一个选项并单击对话框的“添加”按钮时,该选项被添加到我的多选中(使用 asmselect 插件)并设置为选中,我从下拉列表中禁用了该选项。在我$(document).ready(function() {的下拉菜单中,我将多选中的每个选定选项设置为禁用。

        $('#Vendor_IDs').asmSelect({
            sortable: false
        });
        $('#vendor').droplistFilter();
        $('#Vendor_IDs option:selected', this).each(function () {
            $("#vendor option[value='" + $(this).val() + "']").attr("disabled", true);
        });

        $('#popupAddVendor').dialog(
        {
            autoOpen: false,
            modal: true,
            width: 600,
            buttons:
            {
                'Add': function () {
                    var v = $('#vendor').val();
                    if (v.length > 1) {
                        $('#Vendor_IDs').append($('<option></option>').val(v).html($('#vendor option:selected').text()).attr("selected", true));
                        $('#Vendor_IDs').change();
                        $('#vendor option:selected').attr("disabled", true).attr("selected", false);
                        $('#vendor').attr('selectedIndex', 0);
                    }
                    $(this).dialog('close');

                },
                'Cancel': function () {
                    $(this).dialog('close');
                }
            }
        });
于 2011-03-01T20:46:15.503 回答