jQuery自动完成组合框添加新项目?

Posted

技术标签:

【中文标题】jQuery自动完成组合框添加新项目?【英文标题】:jQuery Autocomplete Combobox add new Item? 【发布时间】:2021-11-16 09:23:17 【问题描述】:

我目前想用“jQuery UI Autocomplete - Combobox”创建以下解决方案: 我从可以选择的数据库中加载条目。如果某个值不存在,则应让用户添加其值。

我目前的依据是:https://jqueryui.com/autocomplete/#combobox

现在我已经适应了“_removeIfInvalid: function(event, ui) ...”

我删除了“//删除无效值”部分,并将其替换为以下行:

$('#name1').append('<option value='+ value + ' selected>'+ value + '</option>');

这也是从原理上起作用的。只有值“#name1”仍然是一个固定值,我目前无法以某种方式获得这个名称。使用“this.input.name”和类似的调用它不起作用。搜索并没有引导我找到解决方案。

为了我的目的,我有什么机会修改“//删除无效值”部分?

提前非常感谢。页面DE

_removeIfInvalid: function( event, ui ) 
        
        // Selected an item, nothing to do
        if ( ui.item ) 
            return;
        
        
        // Search for a match (case-insensitive)
        var value = this.input.val(),
        valueLowerCase = value.toLowerCase(),
        valid = false;
        this.element.children( "option" ).each(function() 
            if ( $( this ).text().toLowerCase() === valueLowerCase ) 
                this.selected = valid = true;
                return false;
            
        );
        
        // Found a match, nothing to do
        if ( valid ) 
            return;
        
        
        
        
        $('#name1').append('<option value='+ value + ' selected>'+ value + '</option>');
        
        
        
    ,

【问题讨论】:

如果您查看示例,您可以看到原始元素 this.element 被隐藏并且 this.input 已创建,请参见第 45 行。这个新输入没有 ID 属性。建议使用this.element.find("select")作为目标。 【参考方案1】:

感谢您的建议。这对我帮助很大。

问题的解决方法:

$('#'+this.element.attr("id")).append('<option value='+ value + ' selected>'+ value + '</option>');

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于jQuery自动完成组合框添加新项目?的主要内容,如果未能解决你的问题,请参考以下文章

为啥动态值没有填充在自动完成组合框中?

如何使用 KnockoutJS 和 JQuery UI 创建自动完成组合框

jQuery UI 自动完成组合框选项需要在 iPhone 上双击

自动选择单一匹配jQuery UI自动完成组合框

输入 jQuery 自动完成文本框时显示整个列表

没有 jQuery UI 的自动完成