gpt4 book ai didi

javascript - 始终在 jQuery 自动完成中显示特定选择,即使它与输入不匹配

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:44 24 4
gpt4 key购买 nike

我有一个 jQuery 自动完成功能(jquery ui 版本 1.8),我可以在其中键入一个名称。如果可用,我希望用户从列表中选择一个名称,因为这些是我们数据库中的所有者名称。但是,有时他们需要添加新的所有者名称,在这种情况下,我希望他们从自动完成的下拉列表中选择“添加新的”。问题是,如果我在自动完成源数据中包含“添加新”选项,它不会在自动完成下拉列表中显示为选项,因为它与用户在文本框中键入的内容不匹配。

下面是javascript代码。我不包括服务器端代码,但假设服务器的结果在下拉列表中创建了一个列表,例如“添加新的、Betty、Bob、Cathy、Dan、Edward”。 “选择器”是文本类型的标准 html 输入字段。

    $('.selector').autocomplete({
autoFocus: false,
minLength: 1,
focus: function (event, ui) {
$('.selector').val(ui.item.value);
return false;
},
select: function (event, ui) {
$('.selector').val(ui.item.value);
return false;
}
});

$('.selector').keyup(function(){
// Each time a new character is entered, recreate the drop down list by matching entered characters to beginning of first name field

$.ajax({
type: "POST",
url: "(url to c#.net asmx page and method)",
contentType: "application/json; charset=utf-8",
data: '{(various data parameters)}',
datatype: "json",
error: function (data) {
var data = $.parseJSON(data.responseText);
alert("Error: " + data.Message);
},
success: function (data, status, info) {
if (data.hasOwnProperty("d")) {
var nameList = data.d;
}
else {
var nameList = data;
}
$('.selector').autocomplete("option", "source", nameList);
}
});
});

我意识到我已经从 ajax 调用的 url 和数据部分的 javascript 代码中删除了几个 block ,但我认为这没问题,因为获取自动完成的“源”不是这里的问题。

需要做的是,例如,当我输入字母 b 时,我需要在列表中看到“Add New, Bill, Betty”作为我的三个选择,但现在我只看到“Bill, Betty”因为“新增”中没有“b”。

关于如何让“添加新”选项始终可用的任何想法或解决方案?

非常感谢您。

最佳答案

我认为自动完成将检索到的对象集合构建到一个无序列表中。喜欢 ->

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all">
<li class="ui-menu-item">
<a class="ui-corner-all">item 1</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 2</a>
</li>
<li class="ui-menu-item">
<a class="ui-corner-all">item 3</a>
</li>
</ul>

它还有一个方法来检测何时使用 open 事件打开列表。

$('selector').autocomplete({
open: function(){
$('.ui-autocomplete').prepend('<li class="ui-menu-item"><a class="ui-corner-all ui-add-new"> Add New </a></li>');
}
});

您可以看到我们在自动完成下拉菜单打开时添加了一个列表项,因此您总是在列表顶部看到“添加新”(jQuery 的 .prepend() 处理)。

关于javascript - 始终在 jQuery 自动完成中显示特定选择,即使它与输入不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11991139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com