jQuery автозаполнение просмотреть все по щелчку мыши?



Я использую автозаполнение 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 (например, кнопку или ссылку), которое отобразит все доступные варианты автозаполнения? В основном я хочу сделать гибрид автозаполнения и элемента select/dropdown.



спасибо!

858   20  

20 ответов:

Я не вижу очевидного способа сделать это в документах, но вы пытаетесь запустить событие focus (или click) в текстовом поле с включенным автозаполнением:

$('#myButton').click(function() {
   $('#autocomplete').trigger("focus"); //or "click", at least one should work
});

вы можете вызвать это событие, чтобы показать все опции:

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

или см. пример в ссылке ниже. Похоже, именно то, что вы хотите сделать.

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

EDIT (от @cnanney)

Примечание: Вы должны установить minLength: 0 в автозаполнении для пустой строки поиска, чтобы вернуть все элементы.

Я нашел, что это работает лучше всего

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)

чтобы показать все элементы / имитировать поведение combobox, вы должны сначала убедиться, что вы установили параметр minLength в 0 (по умолчанию-1). Затем вы можете привязать событие click для выполнения поиска с пустой строкой.

$('inputSelector').autocomplete({ minLength: 0 });
$('inputSelector').click(function() { $(this).autocomplete("search", ""); });

решение: дисплей jQuery пользовательского интерфейса автоматического полного списка на событие фокуса

решение, чтобы заставить его работать более одного раза

<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());
    });
});

попробуйте это:

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

и minLength значение 0

работает каждый раз :)

 $j(".auto_complete").focus(function() { $j(this).keydown(); })

это единственное, что работает для меня. Список показывает каждый раз и закрывается при выборе:

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

  window.setTimeout(function()
  {
    if (self.value.length == 0)
      $(self).autocomplete('search', '');
  });
})

вы можете использовать это:

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

это показывает все опции: "%" (см. ниже)

важно то, что вы должны поместить его под предыдущим объявлением #example, как в примере ниже. Мне потребовалось некоторое время, чтобы понять это.

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

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

надеюсь, это кому-то поможет:

$('#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
        })
<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/

вы должны set minLenght to ноль для того, чтобы сделать эту работу! Вот рабочий пример.

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

Я решил это с помощью атрибут minChars: 0 и после, вызвать два клика. (автозаполнение показывает после 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");
}

Я видел все ответы, которые кажутся полными.

Если вы хотите получить список, когда курсор находится в текстовом поле или когда вы нажимаете на соответствующую метку, вот как вы можете сделать:

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

это прекрасно работает в Firefox, IE, Chrome ...

$("#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
        });

Я не мог получить $("#example").autocomplete( "search", "" ); часть для работы, только после того, как я изменил свой поиск с символом, который существует в моем источнике он работает. Поэтому я тогда использовал например $("#example").autocomplete( "search", "a" );.

Я думаю, что лучший вариант-поставить $("#idname").автозаполнение ("поиск",""); в параметр onclick текстового поля . Поскольку при выборе фокус помещается в jquery, это может быть обходным путем . Не знаю, должно ли это быть приемлемым решением.

Мне нужно было сделать это недавно и после попытки нескольких различных перестановок (с помощью 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 на фокус (даже если у вас есть текст по умолчанию в поле ввода, как я сделал выше).

Он также автоматически выбирает текст в текстовом поле, чтобы предотвратить пользователя от необходимости очистить текст.

Как только элемент выбран из списка автозаполнения, он помещает это элемент в поле ввода автозаполнения и перемещает фокус на другой элемент управления (тем самым предотвращая повторное открытие автозаполнения).

Я планирую заменить его, добавив динамические вызовы Ajax в очень хороший выбрал выберите списки с Таяние Льда обновление, когда у меня есть шанс.

я использовал таким образом:

$("#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");

Comments

    Ничего не найдено.