在jquery自动完成中限制用户输入到可用列表
我正在使用jQueryUI(1.8.11)自动完成插件 它有一个简单的自定义行为来检查值是否存在于可用列表中。这是因为我想限制用户使用列表中可用的内容。如果输入不在列表中,它将删除框中的内容。很好用 但是下面的实现仍然允许用户编写选项中没有的任何内容。我宁愿不让他写一些不存在的东西 那么,有没有一种方法可以擦除用户在没有选项时会立即写入的字符呢?或者,如果列表中有查找,最好只让他点击一系列字符 这是到目前为止我的代码在jquery自动完成中限制用户输入到可用列表,jquery,jquery-ui,autocomplete,Jquery,Jquery Ui,Autocomplete,我正在使用jQueryUI(1.8.11)自动完成插件 它有一个简单的自定义行为来检查值是否存在于可用列表中。这是因为我想限制用户使用列表中可用的内容。如果输入不在列表中,它将删除框中的内容。很好用 但是下面的实现仍然允许用户编写选项中没有的任何内容。我宁愿不让他写一些不存在的东西 那么,有没有一种方法可以擦除用户在没有选项时会立即写入的字符呢?或者,如果列表中有查找,最好只让他点击一系列字符 这是到目前为止我的代码 $("#autocomplete").autocomplete({ a
$("#autocomplete").autocomplete({
autoFocus: true,
delay: 200,
source: function (request, response) {
$.ajax({
url: "/Country/Find", type: "GET", dataType: "json",
data: { search: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
return { label: item, value: item }
}))
}
})
},
change: function (event, ui) {
if (!ui.item) {
$(this).val('');
}
}
});
我发现这个问题是为了检索dropdownlist的选择!但是要删除最后一个字符不知道
$("#autocomplete").autocomplete({
autoFocus: true,
delay: 200,
source: function (request, response) {
$.ajax({
url: "/Country/Find", type: "GET", dataType: "json",
data: { search: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;
if(strUser != null)
{
return { label: item, value: item }
}
else
{
//remove last char
}
}))
}
})
});
我是这样做的:
$("#autocomplete").autocomplete({
autoSelect: true,
autoFocus: true,
delay: 200,
source: function (request, response) {
$.ajax({
url: "/Country/Find", type: "GET", dataType: "json",
data: { search: request.term, maxResults: 10 },
success: function (data) {
//Check the length of the returned list if it's empty
if (data.length == 0) {
//Remove the last character from the input
$("#autocomplete").val(function (index, value) {
return value.substr(0, value.length - 1);
})
//Rerun search with the modified shortened input
$("#autocomplete").autocomplete("search");
}
response($.map(data, function (item) {
return { label: item, value: item }
}))
}
})
}
});
改用这个:谢谢,但这并没有提供我想要的功能,即使我承认这真的很方便。你需要什么,它没有?我想要的是,不允许在输入框中写入与某个可用项中的序列不匹配的内容。这正是我建议选择的原因。如果输入不是选项之一,则无法选择。用户可以键入他想要的任何内容,但会被忽略-select的作用就像输入是空的(并向用户指示)