2015-02-12 7 views

ответ

0

Okay so datalist - элемент HTML5, который позволяет использовать автозаполнение в большинстве современных браузеров. Это говорит о том, что он не дает возможности установить параметр по умолчанию или выбранный. Кроме того, он не имеет events, поэтому вам нужно сделать это, используя стандартные события на ваших элементах.

Пример

$(document).ready(function() { 
 
    var datalist = $('#someCountries'); 
 
    var opts = datalist.find('option'); 
 

 
    console.log(opts.val()); 
 
    console.log(opts.length); 
 

 
    function checkOpts() { 
 
     if (opts.length === 1) { 
 
      $('#country').val(opts.val()); 
 
     } 
 
    } 
 

 
    $('#country').on('focusin', checkOpts); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="country" list="someCountries" /> 
 
<datalist id="someCountries"> 
 
    <option label="United Stated" value="USA"></option> 
 
</datalist>

Вы, возможно, потребуется изменить focusin событие к чему-то более подходящее для вашей ситуации, но это должно получить вас на вашем пути.

+0

Извините, если я не был чист. Предположим, что в этом списке есть 20 вариантов. Вы начинаете вводить текст, пока он не отфильтруется до одного. Есть ли способ проверить текущее состояние источника данных, поскольку он фильтруется? В примере с примерами: если я добавляю больше стран и их тип, функция jquery видит только исходный список, а не тот, на который он был отфильтрован. Было бы проще, если бы я посмотрел на использование автозаполнения jquery вместо html5 datalist? – JerryLand

+0

Если это вариант, то да, я определенно рекомендую jQuery auto complete over datalist – MattSizzle