没有搜索字段的jQuery选择插件

Posted

技术标签:

【中文标题】没有搜索字段的jQuery选择插件【英文标题】:jQuery Chosen plugin without search field 【发布时间】:2012-04-20 08:31:22 【问题描述】:

不确定这是否已经在某处被覆盖,但我在文档中找不到它,并且想知道是否可以不包含 jQuery 选择插件的搜索输入框(用于样式选择输入)。具体来说,我想使用没有它的标准选择一个。

http://harvesthq.github.com/chosen/

【问题讨论】:

只是在黑暗中拍摄:您是否尝试设置data-filter=false @matsr 刚刚尝试过.. 不幸的是,这不起作用:\ 好吧,那我不知道。对不起!祝你好运。 gunnarsson 的回答是好方法:***.com/a/13128429/1413049 【参考方案1】:

只是一个快速的跟进:我注意到在函数中

AbstractChosen.prototype.set_default_values

从变量中读取

this.options.disable_search

所以你可以禁用搜索字段

jQuery('select').chosen( disable_search: true );

不使用固定数量的阈值。

【讨论】:

如何学习这些关于属性和属性的知识?没有文档 AFAIK,只有 github 上的演示文稿太轻量级并且没有涵盖任何内容。【参考方案2】:
$(".chzn-select").chosen(disable_search_threshold: 3);

如果select的元素个数小于disable_search_threshold(这里是2以下),搜索框不会显示。

【讨论】:

ajax-chosen怎么样,我可以在这里传递相同的参数吗?【参考方案3】:

好吧,我也尝试了文档,但没有运气,所以我终于解决了这个问题

$('.chzn-search').hide();

我在调用选择后执行上述操作。 希望这会有所帮助

【讨论】:

不错。虽然可能不是最好的方法,但它确实有效。不知道为什么我没有早点想到这样做。谢谢! :) 你也可以在你的 CSS 中使用 .chzn-search display:none;。但是在构造函数对象中使用 disable_search:true 是正确的方法。【参考方案4】:

我在样式表中添加了一个类。

.chzn-select  display: none 

或者,对于单个元素,我指定元素并附加 _chzn 以定位它。

#element_chzn .chzn-select  display: none; 

请注意: 选择会将元素 ID 和类中的连字符转换为下划线,因此您需要定位 element-id

#element_id_chzn .chzn-select  display: none; 

【讨论】:

仅供参考:这样做会删除选项卡进入选择下拉列表的能力。我最初尝试过这个,但是一旦我无法进入它(严格的可访问性指南),我不得不使用 disable_search 选项。【参考方案5】:

选择的较新版本的 jquery 为您提供了使用下拉菜单禁用搜索输入的选项。

$(".chzn-select").chosen(
   disable_search: true
);

旧版本不支持此选项。如果严格不允许您使用比您可以使用的新版本,一些方法

$(".chzn-select").chosen(
   disable_search_threshold: 5
);

如果结果少于 5 个,它将隐藏搜索框,最好与性别类型下拉菜单一起使用。还有另一种方法可以解决这个问题,那就是;

$(".chzn-select").chosen();
$(".chzn-select").hide();

初始化后立即调用 hide,不知道为什么这个技巧有效,但它正在做你想做的事!

我建议您使用最新版本,以便您可以使用最新选项。

希望它对你有用!

【讨论】:

【参考方案6】:

使用此代码禁用它:

jQuery('select').chosen( disable_search: true );

别忘了隐藏它,否则它仍然可以在移动设备上运行!

.chzn-searchdisplay: none

【讨论】:

【参考方案7】:

disable_search_threshold 选项隐藏单选下拉菜单的搜索框。传入的数字指定在显示搜索框之前要允许的项目数。如果您不想要搜索框,只需将其设置为高于其将包含的项目数量的数字即可。

$('#myDropDown').chosen( disable_search_threshold: 10 );

【讨论】:

【参考方案8】:
$('select').chosen( disable_search: true );

【讨论】:

嗨,欢迎来到堆栈溢出!这段代码可能很好地解决了这个问题——但它总是被认为是对你给出的代码进行一些解释的好形式。你应该知道 - 有很多新手来到 Stack Overflow,也在谷歌上寻找解决他们问题的方法,他们可以从你的专业知识中学到一两件事......但前提是你解释了一些事情。不要忘记,对你来说可能很明显的东西,对于一个新手来说可能不是:)【参考方案9】:

由于隐藏多个选择的搜索字段的选择设置似乎都不起作用,我将第 577 行中的 selected.jquery.js 破解为:

<li class="search-field"><span class="placeholder">' + this.default_text + '</span></li>

(跨度而不是输入字段)。也需要注释掉这一行

this.search_field[0].disabled = false;

对我来说工作得很好——尽管它不是破解代码的最佳做法。

【讨论】:

【参考方案10】:

选择仅适用于我的最新版本:

$('ul.chosen-choices li.search-field').hide();

【讨论】:

【参考方案11】:

我使用了 jQuery('select').chosen( disable_search: true );但是在 chrome profiler 上,无论如何调用了方法 search_field_scale 并且消耗了很多性能。

所以我删除了该方法和对他的所有调用,并在 show_search_field_default 上替换为 this.search_field.css('width': '100%') 并将 style=25px 替换为 style:100% 然后 this.search_field.css( 'width': '23px' ); result_select 因为“数据占位符”

对我来说工作得很好。

【讨论】:

【参考方案12】:
disable_search:true,

Here is the document for chosen jquery plugin

【讨论】:

以上是关于没有搜索字段的jQuery选择插件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery DataTables 插件在特定列中搜索?

jquery easy ui 简单字段选择搜索实现

jQuery Dialog 和 Datepicker 插件的问题

jQuery - 基于另一个字段选择值禁用输入字段

使用 jQuery 验证插件匹配两个字段

Jquery 实时验证