0

ユーザー名の最大長は 18 である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 autocomplete プラグインを使用できます

使いやすいです

于 2012-04-29T19:39:36.367 に答える
0

これを参照してください:

http://jsfiddle.net/64ag5/

コードを再フォーマットしました。基本的に、関数を宣言し、匿名関数内で on を宣言しsplitましextractLastた。suggestbind("blur keydown keypress keyup")

また、ユーザーが 18 番目の文字を入力すると起動しますが、その文字が入力のプロパティで使用可能になる前に発生しkeypresssます。したがって、その瞬間、テキストの長さは 17 のままです。keydownvalue

keyupイベントのみを処理することをお勧めします。そうすることで、最大長の検証が保証されます。

于 2012-04-29T20:07:50.740 に答える