3

私はこの解決策に従うことを試みていますが、運が上がらないようにしています。 動的入力テキストボックスがオートコンプリートにバインドされていません

input = document.createElement("input"); 
    input.disabled = true; 
    input.className = this.FORM_INPUT_CLASS; 

    $(input.id).autocomplete(autocomp_opt); 
    table.rows[table.rows.length - 1].cells[1].appendChild(input); 

jQuery autocomplete for dynamically created inputs

var autocomp_opt = { 
    source: function (request, response) { 

    $.ajax({ 
     url: "ServiceProxy.asmx/ByKeyWord", 
     cache: false, 
     data: "{ 'term':'" + request.term + "'}", 
     dataType: "json", 
     type: "POST", 
     crossDomain: "true", 
     contentType: "application/json; charset=utf-8", 
     error: function (xhr, textStatus, errorThrown) { 
      alert('Error: ' + xhr.responseText); 
     }, 
     success: function (data) { 
      response($.map(data, function (item) { 
       return item.split(","); 
      }));  
     }, 

     error: function (a, b, c) { 

     } 
    }); 
}, 
    minLength: 2 
}; 

そして、私の入力ボックスが生成されますときに、私が試した...そこにはエラーがなかったが、誰場合...それを正しくバインドしていないようですどんなアイデアでも投稿してください。ありがとう。

+1

ブラウザのJavaScriptコンソールを確認してください。 'input.id'が定義されていない可能性があります。 – Bojangles

+0

なぜappendとlive jquey機能を使用しないのですか? – Mostafa

+0

input.idは他の場所で定義されており、正しく表示されます。オートコンプリートの例を挙げてください。私が見たサンプルはマウスのクリックと関連しています。しかし、didはあらかじめ定義された関数なので、わかりません。 jqueryの構文が私を殺しています... – wirble

答えて

0

私が追加したときにそれが動作します。この行の後

$('#fieldname").autocomplete(autocomp_opt); 

table.rows[table.rows.length - 1].cells[1].appendChild(input); 

私はそれが入力ボックスが何かに追加されるときだけ登録できると思います。また、onfocus、onselectなどのイベント処理を追加することも注目に値します。つまり、それも機能します。私は疑問に思っていますが、これは入力ボックスが完全にレンダリング/追加されたためです。

3

この行を変更してみてください:

これに
$(input.id).autocomplete(autocomp_opt); 

$('#' + input.id).autocomplete(autocomp_opt); 
+1

これを見て私を笑わせてください、私はこのミスをたくさんします。 input.idにはハッシュ記号がないので、jQueryは要素を返さず、バインディングをスキップし、意図したターゲットを見つけることができないためエラーがなく正常に失敗します。 – b01

+0

@jkそれは動作しませんでした。入力テキストがすでにページにある場合に機能します。しかし、動的には動作しません... – wirble

関連する問題