Jquery 如何从自动完成中签入输入的值?
我有一个jquery的autocomplete文本框,点击一个按钮,我需要检查输入的值是来自autocomplete还是一个全新的值 问题是我的代码不断地给我“警告”(“否”)。。。也许我不应该检查“缓存”,但还有别的吗Jquery 如何从自动完成中签入输入的值?,jquery,Jquery,我有一个jquery的autocomplete文本框,点击一个按钮,我需要检查输入的值是来自autocomplete还是一个全新的值 问题是我的代码不断地给我“警告”(“否”)。。。也许我不应该检查“缓存”,但还有别的吗 //////////////////////////////////////////// autocomplete code ////////////////// var cache = {}, lastXhr; $( "
//////////////////////////////////////////// autocomplete code //////////////////
var cache = {},
lastXhr;
$( "#inputV" ).autocomplete({
minLength: 2,
source: function( request, response ) {
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}
lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
cache[ term ] = data;
if ( xhr === lastXhr ) {
response( data );
}
});
}
});
////////////////////////// check if input comes from autocomplete //////////////////
$('#btn_check').click(function() {
var input = $("#inputV").val();
alert(input);
if ( input in cache )
{
alert("yes");
}
else
{
alert("no");
}
});
您可以尝试一些操作。 当文本框处于聚焦状态时,设置计数器“按键”。每次按键(向上和向下箭头按钮除外)都会增加计数器。同时,jqueryautocomplete将显示一些建议,并假设如果用户选择了一个值,那么您将在onchange事件上检查文本框的文本长度 若“按键”计数器值小于文本长度,那个么它来自自动完成
希望这适合您的情况。您可以尝试一些操作。 当文本框处于聚焦状态时,设置计数器“按键”。每次按键(向上和向下箭头按钮除外)都会增加计数器。同时,jqueryautocomplete将显示一些建议,并假设如果用户选择了一个值,那么您将在onchange事件上检查文本框的文本长度 若“按键”计数器值小于文本长度,那个么它来自自动完成
希望这适合你的情况。这就是我在我的一个项目中所做的
function lookup(inputString) {
$.post('/getSuggestions', {
queryString: ""+inputString+""
}, function(data){
if(data.length >0) {
$("#suggestions").show();
$("#autoSuggestionsList").html(data);
}
});
}
function fill(thisValue,thisID) {
$("#inputString").val(thisValue);
$("#id").val(thisID);
$("#suggestions").hide();
}
其中,fill()
函数附加到自动完成返回的结果。因此,如果用户单击列表中的某个项目,fill函数将使用this$(“#id”).val(thisID)设置id为“id”的MyHTML元素中的值代码>
简单地说,如果用户不使用列表中的建议,则不会填写“id”。在您的情况下,您可以添加一个名为/id“isacutocomplate”的隐藏输入,attachfill()代码>函数返回到从自动编译返回的结果,如果单击该项,您将更新“isacutocomplate”,否则您将不会填充它。所以,当用户单击按钮时,检查“isacutocomplate”输入值,然后查看它是否来自autocomplate的列表
希望这对你有意义。如果没有,我可以提供整个过程。这就是我在我的项目中如何做到的
function lookup(inputString) {
$.post('/getSuggestions', {
queryString: ""+inputString+""
}, function(data){
if(data.length >0) {
$("#suggestions").show();
$("#autoSuggestionsList").html(data);
}
});
}
function fill(thisValue,thisID) {
$("#inputString").val(thisValue);
$("#id").val(thisID);
$("#suggestions").hide();
}
其中,fill()
函数附加到自动完成返回的结果。因此,如果用户单击列表中的某个项目,fill函数将使用this$(“#id”).val(thisID)设置id为“id”的MyHTML元素中的值代码>
简单地说,如果用户不使用列表中的建议,则不会填写“id”。在您的情况下,您可以添加一个名为/id“isacutocomplate”的隐藏输入,attachfill()代码>函数返回到从自动编译返回的结果,如果单击该项,您将更新“isacutocomplate”,否则您将不会填充它。所以,当用户单击按钮时,检查“isacutocomplate”输入值,然后查看它是否来自autocomplate的列表
希望这对你有意义。如果没有,我可以提供整个流程。在任何情况下都会给出“否”:(也许我不应该检查'cache',但还有别的什么?你能给我一些存储在input
和cache
中的示例数据吗?例如console.log('input='+input+',cache='+cache)
。我相信你是在用firebug调试这个问题吗?input=Black-necked Grebe,cache=[object]-可能此“对象”的格式不同?是的。请下载firebug并使用console.log(cache)
写出缓存的内容。请仅在console.log(cache)
上获取它。它将为您提供更详细的信息。在任何情况下仍然给出“否”:(也许我不应该检查'cache',但还有别的什么?你能给我一些存储在input
和cache
中的示例数据吗?例如console.log('input='+input+',cache='+cache)
。我相信你是在用firebug调试这个问题吗?input=Black-necked Grebe,cache=[object]-可能此“对象”的格式不同?是的。请下载firebug并使用console.log(cache)
写出缓存的内容。请仅在console.log(cache)
获取它。它将为您提供更详细的信息。