Подтвердить что ты не робот

Множественный выбор с помощью datalist

Я использую тег, чтобы создать список предложений для моего окна поиска, но я не могу выбрать несколько значений из datalist. В настоящее время мой HTML:

<html>

  <form action="search_tags.php" method="GET"/>

  Search: <input type="text" multiple="multiple" name="search" list="tags" autocomplete="off" />

  <datalist id="tags">
    <option value="black">
    <option value="gold">
    <option value="grey">
    <option value="pink">
    <option value="turquoise">
    <option value="red">
    <option value="white">
  </datalist>

</html>

Он предложит предложения по одному пункту, но после этого предложения не будут предлагать автозаполнение для моего второго варианта. Я думал, что тег "multiple" был всем, что мне нужно (и что предлагается в Интернете), но оно, похоже, не имеет желаемого эффекта.

Любые предложения?

4b9b3361

Ответ 1

Несколько в настоящее время работают только с типом ввода = "электронная почта" и только в Chrome и Opera

посмотрите на этот минималистский пример:

<input type="email" list="emails" multiple>
<datalist id="emails">
    <option value="[email protected]">
    <option value="[email protected]">
    <option value="[email protected]">
    <option value="[email protected]">
</datalist>

<input type="text" list="texts" multiple>
<datalist id="texts">
    <option value="black">
    <option value="gold">
    <option value="grey">
    <option value="pink">
    <option value="turquoise">
    <option value="red">
    <option value="white">
</datalist>

(http://jsfiddle.net/iiic/t66boyea/1/)

Первый вход будет работать, второй NOT.. Вы только нажимаете запятую, и список будет отображаться так же, как при щелчке на вкладке.

Ответ 2

Настроенный список данных для принятия нескольких значений:

https://jsfiddle.net/bhbwg0rg/1/

После каждой записи нажимайте , (запятую), а затем пробел

<label for="authors">Type authors from favorite to least favorite</label>
<input type="text" list="names-list" id="authors" value="" size="50" name="authors" placeholder="Type author names">
<small>You can type how many you want.</small>
<datalist id="names-list">
  <option value="Albert Camus">
  <option value="Alexandre Dumas">
  <option value="C. S. Lewis">
  <option value="Charles Dickens">
  <option value="Dante Alighieri">
</datalist>

Ответ 3

В соответствии с этим атрибут "multiple" действителен только для типов ввода электронной почты и файлов.

Ответ 4

У меня была та же самая проблема, и предложенные решения, казалось, не сокращали это. Я написал этот плагин Pure JS (безопасный для IE11) UnComplete, чтобы создать взаимодействие, помогающее управлять несколькими значениями.

Ответ 5

Супер-простой инструмент jQuery: Flexdatalist

Я хотел что-то попроще, но атрибут "множественный", насколько я понимаю, работает только с электронной почтой и файлами, потому что разработчики HTML5 не хотят открывать червячную банку, но разработчики рассматривают возможность изменения, После поиска по всему, единственный способ, с помощью которого я мог заставить это работать, состоял в том, чтобы также получить эти необычные, полезные элементы "#tagHere X" в списке, как на многих сайтах. Это было все или ничего, и это решило мою проблему.

К сожалению, я не смог найти полных инструкций по использованию Flexdatalist. Итак, я включаю супер-полный обзор с рабочим примером, простите, если это слишком много...

1. Получите только два файла от Flexdatalist на GitHub

  • jquery.flexdatalist.min.js
  • jquery.flexdatalist.css (Вместо этого вы можете использовать .min.js, но, вероятно, захотите настроить CSS)

2. Поместите эти два файла в нужное место:

Я использовал:

[DOMAIN]/js/jquery.flexdatalist.min.js

[DOMAIN]/css/jquery.flexdatalist.css

3. Включить файл CSS

либо:

  • @import "jquery.flexdatalist.css"; в вашем файле style.css уже в [DOMAIN]/css/

или

  • <link href="css/jquery.flexdatalist.css" rel="stylesheet" type="text/css"> между вашими <head> тегами страницы с datalist

4. Включите эти атрибуты в свой тег <input>, который содержит ваш datalist

(вместе с другими вашими атрибутами)

  • <input... class="flexdatalist form-control" data-min-length="1" data-searchContain="true" multiple="multiple"... >

5. Включите три оператора JavaScript после вашего datalist

<script src=\"http://code.jquery.com/jquery-1.8.3.min.js\"></script>
<script src=\"js/jquery.flexdatalist.min.js\"></script>
<script>
$('.flexdatalist-json').flexdatalist({
     searchContain: false,
     valueProperty: 'iso2',
     minLength: 1,
     focusFirstResult: true,
     selectionRequired: true,
});
</script>

Рабочий пример:

[DOMAIN]/index.html:

<!DOCTYPE html>
<html>
<head>
<title>Flexdatalist Minimalist</title>
<link href="jquery.flexdatalist.css" rel="stylesheet" type="text/css">
</head>
<body>

<input type="text" placeholder="Choose a fruit"

  class="flexdatalist form-control"
  data-min-length="1"
  data-searchContain="true"
  multiple="multiple"

list="fruit" name="my-fruit">
<datalist id="fruit">
  <option value="Apples">Apples</option>
  <option value="Bananas">Bananas</option>
  <option value="Cherries">Cherries</option>
  <option value="Kiwi">Kiwi</option>
  <option value="Pineapple">Pineapple</option>
  <option value="Zucchini">Zucchini</option>
</datalist>

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="jquery.flexdatalist.min.js"></script>
<script>
$('.flexdatalist-json').flexdatalist({
     searchContain: false,
     valueProperty: 'iso2',
     minLength: 1,
     focusFirstResult: true,
     selectionRequired: true,
});
</script>

</body>
</html>

С двумя файлами здесь:

[DOMAIN]/js/jquery.flexdatalist.min.js

[DOMAIN]/css/jquery.flexdatalist.css

Альтернатива с отличной документацией: Awesomeplete