【问题标题】:Why did jquery ui autocomplete drop support for these feautures?为什么 jquery ui autocomplete 放弃了对这些功能的支持?
【发布时间】:2011-06-30 18:53:49
【问题描述】:

jquery UI 团队有一个blog on how to replace the legacy autocomplete and justifies that it can replicate all of the old features and options。根据我的测试,我认为它们无法复制:

  1. selectFirst 如果您有远程数据源
  2. selectFirstmustMatch 如果您使用的是 multiple: true

我看到this plugin 中的this questions on how to replicate some of the legacy autocomplete 选项,并且有一个选定的答案,但它没有解决这些情况。

jquery ui folks have an example of replicating selectFirst in the new autocomplete,但除非我弄错了,否则它仅适用于本地数据源(不适用于远程数据源,因为在调用事件之前通常不会填写菜单)。

我是否遗漏了什么或者这些场景在 jquery ui 自动完成中根本不支持??

【问题讨论】:

    标签: jquery jquery-ui autocomplete


    【解决方案1】:

    实际上支持这些场景,但您必须扩展 ui.autocomplete 小部件以实现所需的行为。实现 selectFirst 功能的快速示例:

    $.widget( "ui.autocomplete2", $.ui.autocomplete, {
        _renderMenu: function( ul, items ) {
            var self = this;
            $.each( items, function( index, item ) {
                self._renderItem( ul, item );
            });
            // setTimeout is needed because jQueryUI automaticaly removes
            // active item just after menu rendering
            setTimeout( function(){
                self.menu.activate(
                    // fake event object. Needed to avoid jQueryUI error 
                    // (unsafe property access)
                    {'type':'fake'}, 
                    ul.find(':first') );
            }, 1);
        }
    });
    

    注意:始终检查新小部件是否仍与新版本的 jQuery UI 兼容!

    更新:示例 mustMatch 实现可在此处找到:http://jqueryui.com/demos/autocomplete/combobox.html

    【讨论】:

    • @dziastinux - 为什么他们会让你自己编写这些功能?
    • @ooo - 我不知道。我会尝试重新打开功能请求。
    • 我的猜测是他们认为他们没有足够高的优先级来重新实现新的代码库,或者他们的重要性不足以证明他们会添加额外的代码复杂性。但很遗憾,是的。
    • @dziastinux - 感谢 selectFirst 的更新。关于必须匹配的任何想法??
    • @ooo 恐怕 mustmatch 有点复杂。您会看到 jQuery 自动完成功能的设计考虑了非必须匹配。另外还有关于行为的问题:你想允许打字吗?如果是,那么当用户键入一个值时,您不提供下一步该怎么做?拒绝写作不适合这里,因为用户可能认为字段已损坏......所以最好的方法是添加错误样式和错误事件(显示消息)。而这只是一个开始......
    猜你喜欢
    • 2015-04-03
    • 2021-07-11
    • 2013-04-30
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2023-02-18
    相关资源
    最近更新 更多