0

JQuery にはクールなオートコンプリート機能があります。私が望むのは、オートコンプリートから一致するエントリがない場合 (たとえば、zadasdasda のユーザー タイプ)、ユーザーにフラグを立てることです。これは、ユーザーがこの特定のフィールドに入力できるのは、データベース内の値のセットの値と一致するものだけだからです。何らかの方法でピックリストを使用すると言う前に、可能なエントリが多すぎます (> 1,000)。自分で行うコールバックを作成する前に、JQuery でこれを行うためにまだ何もないことを確認したいだけです。再確認したいだけのものが見つかりません。

ありがとう

4

2 に答える 2

3

おそらくこれは役立つでしょう。私があなたの必要性を理解しているなら、これがそれをする方法です。

私の場合、オートコンプリートはAjaxを介してサーバーからデータを取得します。

$("#myselect").autocomplete({
  source: function(request, response) {
    $.ajax({
      url: searchUrl,
      dataType: "json",
      data: request,                    
      success: function (data) {
        // No matching result
        if (data.length == 0) {
          alert('No entries found!');
          $("#myselect").autocomplete("close");
        }
        else {
          response(data);
        }
      }});
    },
  dataType: "json",
  autoFill: false,      
  scroll: false,
  minLength: 2,
  cache: false,
  width: 100,
  delay: 500,           
  select: function(event, ui) { 
    //eventuallydosomething(ui.item.value);
    $("#myselect").autocomplete("close");
  } 
});

興味のある部分は、データがサーバーから返されるときです。

  success: function (data) {
      // If we get no matching result
      if (data.length == 0) {
        alert('No entries found!');
        $("#myselect").autocomplete("close");
      }
于 2012-09-05T11:44:16.267 に答える
0

関数を独自のものに置き換えてからautocomplete._response、デフォルトの jQueryUI 関数を呼び出すことができます

var __response = $.ui.autocomplete.prototype._response;
$.ui.autocomplete.prototype._response = function(content) {
    __response.apply(this, [content]);
    this.element.trigger("autocompletesearchcomplete", [content]);
};

次に、イベント ハンドラーを autocompletesearchcomplete イベントにバインドします (コンテンツは検索の結果、配列です)。

$("input").bind("autocompletesearchcomplete", function(event, contents) {
    if(contents.length<1){
     $("#results").html("No Entries Found");
    }
   else{
      $("#results").html("");
   }
});

デモ

例のソース

于 2012-09-05T11:32:16.110 に答える