【发布时间】:2012-04-30 04:07:50
【问题描述】:
由于用户名的最大长度可以是 18,所以我没有进行 ajax 调用 term.length>2 && term.length < 18,到目前为止还不错,但是当我输入这样的内容时,它会继续进行 ajax 调用
ex : testing for mentions : @name and now spaces!!! ;
这是我正在使用的 js 代码。
$("#input").load().bind("blur keydown keypress keyup",function(){
var t = $("#input").val();
suggest(t);
function split(val){
return val.split(/@\s*/);
}
function extractLast(term){
return split(term).pop();
}
function suggest(inputString){
if(inputString.indexOf("@")>=0){
term=extractLast(inputString);
if(term.length>2 && term.length < 18){
$('#postInput').addClass('load');
var data = 'name=' + term;
$.ajax({
type:"POST",
url:"http://site.com/ajax/mentions",
data:""+term+"",
dataType:"html",
success:function(data){
if(data.length>0){$('#suggestions').fadeIn();
$('#suggestionsList').html(data);
$('#input').removeClass('load');}
}
});
}
else {
$('#suggestions').fadeOut();
}
}
}
});
【问题讨论】:
-
您能否将“console.log(term + "has a length :" + term.length); 放在 $ajax 调用之上,以便查看它尝试发送到 url 的参数?跨度>
-
如果从绑定到输入的事件中删除
keydown和keypress会发生什么? -
因为在 @ 之后有 name = 4
-
@Chopin 很好,它做同样的事情 :) 如果我按空格键,它会每隔一段时间进行一次 ajax 调用
-
请注意,如果您这样做,您将多次触发 ajax 调用,每个事件一个。
标签: javascript jquery ajax autocomplete