0

由于用户名的最大长度可以是 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();
    }
 }
}
});
4

2 回答 2

0

您可以在此处使用 jquery 自动完成插件

它很容易使用

于 2012-04-29T19:39:36.367 回答
0

看到这个:

http://jsfiddle.net/64ag5/

我已经重新格式化了你的代码。基本上,您已经声明了函数splitextractLast并且suggest在声明的匿名函数内部bind("blur keydown keypress keyup")

还要注意,keypressskeydown用户输入第 18 个字符时触发,但在输入的属性中该字符可用之前value。所以在那一刻,文本长度仍然是 17。

我的建议是只处理该keyup事件。这样做可以确保最大长度验证。

于 2012-04-29T20:07:50.740 回答