69

私は比較的簡単な方法でjQueryのオートコンプリートを使用しています:

$(document).ready(function() {
  var data = [ {text: "Choice 1"}, 
               {text: "Choice 2"}, 
               {text: "Choice 3"} ]

$("#example").autocomplete(data, {
  matchContains: true,
  minChars: 0,
  formatItem: function(item) 
    { return item.text; }
    }
  );
  });

オートコンプリートで使用可能なすべての選択肢を表示する onclick イベント (ボタンやリンクなど) を追加するにはどうすればよいですか? 基本的に、オートコンプリートと選択/ドロップダウン要素のハイブリッドを作成しようとしています。

ありがとう!

4

22 に答える 22

100

このイベントをトリガーして、すべてのオプションを表示できます。

$("#example").autocomplete( "search", "" );

または、以下のリンクの例を参照してください。まさにあなたがやりたいことのように見えます。

http://jqueryui.com/demos/autocomplete/#combobox

編集(@cnanneyから)

注: 空の検索文字列がすべての要素を返すようにするには、オートコンプリートで minLength: 0 を設定する必要があります。

于 2010-08-05T14:49:48.707 に答える
39

これが一番うまくいくことがわかった

var data = [
    { label: "Choice 1", value: "choice_1" },
    { label: "Choice 2", value: "choice_2" },
    { label: "Choice 3", value: "choice_3" }
];

$("#example")
.autocomplete({
    source: data,
    minLength: 0
})
.focus(function() {
    $(this).autocomplete('search', $(this).val())
});

ラベルを検索し、値を要素 $(#example) に配置します。

于 2012-03-28T01:37:50.413 に答える
7

すべてのアイテムを表示してコンボボックスの動作をシミュレートするには、最初に minLength オプションを 0 (デフォルトは 1) に設定する必要があります。次に、クリック イベントをバインドして、空の文字列で検索を実行できます。

$('inputSelector').autocomplete({ minLength: 0 });
$('inputSelector').click(function() { $(this).autocomplete("search", ""); });
于 2012-05-17T13:54:55.157 に答える
6

これを試して:

    $('#autocomplete').focus(function(){
        $(this).val('');
        $(this).keydown();
    }); 

minLength0に設定

毎回動作します:)

于 2011-04-05T22:15:52.210 に答える
5

解決方法:フォーカス イベントで jquery ui オートコンプリート リストを表示する

複数回動作させるための解決策

<script type="text/javascript">
$(function() {
    $('#id').autocomplete({
        source: ["ActionScript",
                    /* ... */
                ],
        minLength: 0
    }).focus(function(){     
        //Use the below line instead of triggering keydown
        $(this).data("autocomplete").search($(this).val());
    });
});

于 2011-12-29T12:32:09.047 に答える
4
<input type="text" name="q" id="q" placeholder="Selecciona..."/>


<script type="text/javascript">
//Mostrar el autocompletado con el evento focus
//Duda o comentario: http://WilzonMB.com
$(function () {
    var availableTags = [
        "MongoDB",
        "ExpressJS",
        "Angular",
        "NodeJS",
        "JavaScript",                
        "jQuery",
        "jQuery UI",
        "PHP",
        "Zend Framework",
        "JSON",
        "MySQL",
        "PostgreSQL",
        "SQL Server",
        "Oracle",
        "Informix",
        "Java",
        "Visual basic",
        "Yii",
        "Technology",
        "WilzonMB.com"
    ];
    $("#q").autocomplete({
        source: availableTags,
        minLength: 0
    }).focus(function(){            
       $(this).autocomplete('search', $(this).val())
     });
});
</script>

http://jsfiddle.net/wimarbueno/6zz8euqe/

于 2014-12-01T23:11:23.123 に答える
3
 $j(".auto_complete").focus(function() { $j(this).keydown(); })
于 2010-04-13T16:52:06.307 に答える
2

これは私のために働く唯一のものです。リストは毎回表示され、選択すると閉じます:

$("#example")
.autocomplete(...)
.focus(function()
{
  var self = this;

  window.setTimeout(function()
  {
    if (self.value.length == 0)
      $(self).autocomplete('search', '');
  });
})
于 2011-07-21T04:39:54.063 に答える
2

これはすべてのオプションを示しています: "%"(以下を参照)

重要なことは、以下の例のように、前の #example 宣言の下に配置する必要があることです。これを理解するのにしばらく時間がかかりました。

$( "#example" ).autocomplete({
            source: "countries.php",
            minLength: 1,
            selectFirst: true
});

$("#example").autocomplete( "search", "%" );
于 2010-12-16T18:13:28.377 に答える
2

これを使用できます:

$("#example").autocomplete( "search",  $("#input").val() );
于 2011-04-10T20:33:10.363 に答える
2

これが誰かに役立つことを願っています:

$('#id')
        .autocomplete({
            source: hints_array,
            minLength: 0, //how many chars to start search for
            position: { my: "left bottom", at: "left top", collision: "flip" } // so that it automatically flips the autocomplete above the input if at the bottom
            })
        .focus(function() {
        $(this).autocomplete('search', $(this).val()) //auto trigger the search with whatever's in the box
        })
于 2013-11-15T10:30:08.600 に答える
1

属性minChars:0を使用してこれを解決し、その後、2回のクリックをトリガーします。(入力を1回クリックするとオートコンプリートが表示されます)私のコード

<input type='text' onfocus='setAutocomplete(this)'>

function setAutocomplete(el){
    $(el).unbind().autocomplete("./index.php", {autoFill:false, minChars:0, matchContains:true, max:20});
    $(el).trigger("click");$(el).trigger("click");
}
于 2011-08-09T07:41:08.443 に答える
1
$("#searchPkgKeyWord").autocomplete("searchURL",
        {
            width: 298,
            max: 1000,
            selectFirst: false
        }).result(function (event, row, formatted) {
            callback(row[1]);
        }).focus(function(){
            $(this).click(); //once the input focus, all the research will show
        });
于 2014-04-28T02:42:04.883 に答える
1

完全に見えるすべての回答を見てきました。

カーソルがテキスト フィールドにあるとき、または一致するラベルをクリックしたときにリストを取得する場合は、次のようにします。

//YourDataArray = ["foo","bar"];
$( "#YourID" ).autocomplete({
            source: YourDataArray 
        }).click(function() { $(this).autocomplete("search", " "); });

これは、Firefox、IE、Chrome で正常に動作します ...

于 2012-11-21T07:48:18.773 に答える
0

私は最近これを行う必要があり、いくつかの異なる順列(onfocus、テキストボックスのonclickなどを使用)を試した後、最終的にこれに落ち着きました...

 <input id="autocomplete" name="autocomplete" type="text" 
 value="Choose Document">

 <p>
 <button type="submit" value="Submit" name="submit" id="submit" >
  Submit
 </button>
 </p>

<script type="text/javascript">

$("#autocomplete").autocomplete(
{
source: '@Url.Content("~/Document/DocumentTypeAutoComplete/")' //<--ddl source
, minLength: 0 // <-- This is necessary to get the search going on blank input
, delay: 0
, select: function (event, ui) 
  {
  if (ui.item) {
     $("#autocomplete").val(ui.item.value);//<-- Place selection in the textbox
          $("docForm").submit(); 
          loadDocTypeCreatePartial(ui.item);
          $("#submit").focus(); //This stops the drop down list from reopening 
                                // after an item in the select box is chosen
                                // You can place the focus anywhere you'd like,
                                // I just chose my *submit* button
                }
   }
  }).focus(function () {
    // following line will autoselect textbox text
    // making it easier for the user to overwrite whats in the 
    // textbox
    $(this).select();

    //The below line triggers the search function on an empty string
    $(this).data("autocomplete").search('');
   });
 </script>

これにより、フォーカス時にオートコンプリート ddl リストが開きます (上記のように入力ボックスにデフォルトのテキストがある場合でも)。

また、テキスト ボックス内のテキストを自動選択して、ユーザーがテキストを消去する必要がないようにします。

項目がオートコンプリート リストから選択されると、その項目がオートコンプリート入力ボックスに配置され、フォーカスが別のコントロールに移動します (これにより、オートコンプリートが再び開かれなくなります)。

機会があれば、 Melting Iceアップグレードを使用して、非常に優れた Chosen選択リストに動的 Ajax 呼び出しを追加することで、これを置き換える予定です。

于 2012-12-10T02:05:52.153 に答える
0

$("#example").autocomplete( "search", "" );ソースに存在する文字で検索を変更しただけで、その部分を機能させることができませんでした。だから私はそれから例えばを使用し $("#example").autocomplete( "search", "a" );ました。

于 2010-11-25T09:50:32.880 に答える
0

より良いオプションは $("#idname").autocomplete( "search", "" ); を置くことだと思います テキスト ボックスの onclick パラメータに追加します。選択時に jquery によってフォーカスが置かれるため、これは回避策になる可能性があります。それが許容できる解決策であるかどうかはわかりません。

于 2012-03-31T10:43:18.193 に答える
0

私はこのように使用しました:

$("#autocomplete").autocomplete({
                source: YourDataArray,
                minLength: 0,
                delay: 0
            });

それで

OnClientClick="Suggest(this); return false;"/>

 function Suggest(control) {
                var acControl = $("#" + control.id).siblings(".ui-autocomplete-input");
                var val = acControl.val();
                acControl.focus();
                acControl.autocomplete("search");
于 2016-01-27T06:24:42.130 に答える