2011-07-04 10 views
3

をロード入力に:jQueryのオートコンプリートは、私はアヤックスを使用してロードされた入力ボックスにjQueryのオートコンプリートのプラグインを使用したいコンテンツ

$(document).ready(function() { 
    $('#auto').live('keydown', function(){ 
     $(this).autocomplete(
      "/autocomplete", 
      { 
      delay:10, 
      minChars:2, 
      matchSubset:1, 
      matchContains:1, 
      cacheLength:10, 
      onItemSelect:selectItem, 
      onFindValue:selectItem, 
      formatItem:formatItem, 
      autoFill:true 
     }); 
    }); 
}); 

私のコードに何か問題があると教えてください。

おかげで、

+0

$( "#auto")を試してみませんか? ; ? –

答えて

0

私はわからないんだけど、私はライブ()だと思う - それはあなたがそれをトリガーしてきた後にのみオートコンプリートを適用するように、あなたの例では関数は、KeyDownイベント、イベントをバインドします。 (ライブを飛ばしてみ)のみオートコンプリートで行く:

$(document).ready(function() { 
    $('#auto').autocomplete(
     "/autocomplete", 
     { 
      delay:10, 
      minChars:2, 
      matchSubset:1, 
      matchContains:1, 
      cacheLength:10, 
      onItemSelect:selectItem, 
      onFindValue:selectItem, 
      formatItem:formatItem, 
      autoFill:true 
     } 
    ); 
}); 
+1

OPがAJAX経由でロードされたコンテンツにウィジェットを適用しようとしているため、これはうまくいきません。 –

+0

はい、入力フィールドにページが読み込まれている場合にのみ機能すると思います。 – Roch

+0

これは@mnmlと合意していますが、これは一般的な方法です。これはajaxコンテンツの場合には機能しません。正確にはこの質問の対象です。 –

1
$('#auto').live('keydown', function(){ 

    $("#auto").autocomplete({ 
    source: data, 
    minLength: 3 
    }); 

});上記は私のために働い

...

+0

これは 'minLength'> 1の場合にのみ機能します。その理由は、最初のcharは 'keydown'を引き起こし、' autocomplete'のためのコントロールの登録を実行するため、自動補完クエリには使用できません。 –

3

質問に与えられた溶液を1つの問題がありました。 オートコンプリートを実行するのは、オートコンプリートクエリーに最初の文字を使用できないためです。これは​​をトリガーし、オートコンプリート用のコントロールの登録を実行するためです。次のコード

はすべて(マッチング)既存および新規に作成された(アヤックス)要素のfocusイベントにアタッチし、あなたが入力にクリックするか、タブの後autocomplete()登録を行います。

$(document).delegate(":input[data-autocomplete]", "focus", function() { 
    $(this).autocomplete({ 
     source: $(this).attr("data-autocomplete"), 
    }); 
}) 

この例では、セレクタは、すべて見つけます

<input id="1" data-autocomplete="++URL++"> 

Importarnt:属性"data-autocomplete"を有する要素は、同じ属性は、ソースURLとして使用されている バージョンによっては、live(),delegate()またはon()のいずれかを最初に使用することができます。これらの3つのシグネチャはわずかに異なりますが、どのようにマップするかは簡単に分かります。

$(selector).live(events, data, handler);    // jQuery 1.3+ 
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+ 
$(document).on(events, selector, data, handler);  // jQuery 1.7+ 
関連する問題