2011-05-11 20 views
1

私はjQuery autocomplete pluginを使用しています。ユーザーがテキストボックスを入力すると(オートコンプリートするために配線されている)、リストにはアルファベット順の項目が表示されますか?トリガーのようなもの?jQueryオートコンプリートのテキストボックスを入力するとリスト全体を表示

jQueryのコード

 
$('.someTextbox').autocomplete({
source: function (request, response) {
$.ajax({
url: serviceUrl + "/AddDocumentLinesService.svc/GetLineTypes",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
data: {
maxRows: 10,
textStartsWith: request.term
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item.LineTypeCode + ' - (' + item.Description + ')',
value: item.LineTypeCode
}
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
}
});

第二は、ユーザーが '$に入るように私はそれをしたいと思います('。someTextbox ')' 表示されたリストをテキストボックス。

答えて

2

試してみてください。

$('.someTextbox').focus(function() { $(this).search(); }); 

は、ドキュメントによると、.search()は、手動検索をトリガします。 options.minCharsを0に設定し、options.delayを小さく設定することもできます。これも機能するはずです。参照:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

+0

これはほぼ正しいです。私は.search()を試みて失敗していました。オートコンプリート・プラグインがjQuery.UIプロジェクトにマイグレーションされて以来、私はjQuery UI実装を使用していることに気付きました。だからここには小さな変更がありますhttp://jqueryui.com/demos/autocomplete/#method-search $(this).autocomplete( "search"、 ""); – Mark

1

多分、minCharsoptionを0に設定し、指定された文字列の長さをGetLineTypesに設定してみてください。長さが0の場合、最初のアルファベット順の項目を返します。

別のオプションは、テキストボックスのフォーカスイベントに配線し、オートコンプリート機能を手動でトリガーすることです。

$('.sometextbox').focus(function() { 
    if ($('.sometextbox').val().length ==0) { 
    //no text entered yet 
    $('.sometextbox').val(' '); //insert 2 white spaces in order to trigger the autocomplete 
} 
}); 
+0

あなたは選択肢がありますが、@ Gijsオプションはより洗練されていて、私が探していた正確な方法を見つけました。ありがとう! – Mark

+0

あなたはあまりにも親切です。 @ Gijsのソリューションはずっと良いです。とにかくありがとう! –

0

すべての答えminCharsが新しいバージョンで推奨されませんので、right.I'mは、これを追加する:多分あなたはこのような何かを持つ「トリック」オートコンプリートすることができます。
minLengthを使用します。
セット minLength : 0
また、テキストフィールドの横にあるボタンを使用して、使用可能なすべてのオプションのドロップダウンやトグルのような動作を検討することもできます。
ハッピーコーディング!

編集
また、あなたは全体のリストをロードしているので、あなたが言及している場合があります遅延の既存の動作をオーバーライドし、0として遅延を作ることができます。

$('input#textboxid').autocomplete('search','','delay',0); 
関連する問題