2

我正在使用自动完成和 trackpadscroll 小部件来显示一个 MultiSelect 元素,即使我使用单个文本标题选项并在稍后附加链接以检查所有并取消选中所有,它总是选择(取消选中或检查所有节点) 即使它们不可见。有什么办法绕过这个吗?

我尝试了以下方法,但似乎不起作用:

//只是代码的一部分,特别是来自 Eric Hynds 插件的一个 MultiSelect 小部件 ( http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/ )

       var o1= $('select#select1').multiselect('widget');

       header: "Contacts filtered and available for tag assignment<span style='display:inner-block; float:right; margin-top:0.5em;'> Tag label: <b><?=$tag_label?></span>",


            checkAll:function(event, ui){
                    event.preventDefault();

                    o1.find("label").each(function(){  
                    var labelx = $(this).hasClass('x');

                    if( $(this).find(':checkbox').is(":not(':checked')") && $(labelx).is(':visible') )
                        {
                        $(this).click();
                        }

                 })

编辑 11 月 20 日:我不认为 Uncheck all 会带来任何麻烦,毕竟即使它取消选中所有(因为最初我没有渲染它们..基本上我正在查看一个数据库并检查一个联系人是否被标记为来自使用 Ivan Bozhanov 的 jstree 插件创建的标签树的标签)问题主要出在 check all 钩子上(它标记为已检查所有 li 元素,即使它们在过滤搜索中不可见......这会导致它们错误地更新它们使用后来的 AJAX 处理脚本),因为我已经修改了代码库,但它与该 Web 项目的另一部分共享。在这个阶段,客户决定暂停此功能,但需要在下一个版本中对其进行增强。也就是说,这是一个经过良好测试的界面错误。

最初将在右侧显示一个 Eric Hynds 小部件(经过重新设计,不再是下拉列表,而只是一个列表)。在左侧,应该只显示一个输入文本字段。当用户在那里输入内容时,它会调用一个 jQuery UI 自动完成实现,该实现从数据库中请求通过用户的名字、姓氏、电子邮件、域电子邮件地址以及其中一些通过 AJAX 的组合找到的联系人。

当它返回时,它会在左侧的 Eric Hynds 小部件上显示结果列表。当用户点击“检查全部”时,它应该只标记那些可见的,因为这些是搜索要添加到右手选择的联系人的结果。这是通过在 Eric Hynds 插件上执行一些钩子和绑定来完成的。所以我们有它们的两个实例,因此引用 select1.. 我们从一个转移到另一个选择下拉列表,然后在用户点击时重新初始化

[ 11 月 25 日更新] 所以这是一个实时标签分配工具,它是我的客户要求的核心功能。请帮忙!我提供了一些我自己的声誉,甚至没有太多,因为我真的很想从其他开发人员的角度来了解什么是可行的,如果有必要我可以提供更多信息;)

稍后,我将这些项目附加到 Eric Hynds 重新设计的小部件中。+(没有下拉菜单,但有另一个部分确实与它们一起使用)到该特定标题,但即使元素不可见,它仍在检查和取消选中元素(我在输入自动完成小部件时确定这一点,它加起来该标签的“x”类,它会正确更新前端和后端摘录中的所有内容,以取消选中全部并选中全部)

有什么方法可以防止它发生而无需修改多选小部件的源代码(好吧可能有点)?

它已在另一个屏幕中重新使用,并且在所有检查和取消检查的情况下都可以正常工作..

4

0 回答 0