2015-04-27 4 views
0

Я хочу настроить способ отображения даталиста. У меня есть следующий DataList прямо сейчасНастроить html datalist dropdown

<input type="text" id="employee" list="employee"> 
<datalist id="employee"> 
    <option value="John Doe">John Doe (ID: 1)</option> 
    <option value="Jane Doe">Jane Doe (ID: 2)</option> 
    <option value="John Jane">John Jane (ID: 3)</option> 
</datalist> 

Когда я печатаю на поле ввода, я вижу выход, как этот enter image description here

Но мое требование, чтобы заставить это выглядеть, как показано ниже и

enter image description here

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

enter image description here

Как я могу это сделать? В основном я хочу показать более подробную информацию в раскрывающемся списке, но выберите только имя, а не идентификатор для отправки формы. Кроме того, я не хочу, чтобы в раскрывающемся списке были две колонки (темнее и светлее). Я просто хочу, чтобы ценность была больше информации.

Вот JSFiddle, который я использовал для этого вопроса.

P.S. - Я динамически генерирую этот динамит из Ajax Call на основе пользовательского ввода в текстовом поле. Кроме того, я не могу использовать jquery для управления чем-либо. Он должен быть встроенным javascript.

+0

Удалить содержимое между тегами. Вы можете настроить атрибут value для каждого параметра при получении данных из вызова AJAX. [Взгляните на эту ссылку.] (Http://blog.teamtreehouse.com/creating-autocomplete-dropdowns-datalist-element) – chRyNaN

+0

Вы должны разместить больше кода, в частности, создающего каталоги данных. –

ответ

1

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

<option value="John Doe">John Doe (ID: 1)</option> 

к:

<option value="John Doe"></option> 

удалить вторую колонку.

Это может быть сделано на прием данных через вызов AJAX, просто создайте параметр в JavaScript:

var option = document.createElement("option"); 
option.value = name + " (ID: " + id + ")"; 
document.getElementById("my-datalist").appendChild(option); 

Приведенный выше код будет сделать один столбец, однако, содержит идентификатор в поле значения , Вам нужно будет удалить это перед отправкой, если вы не хотите, чтобы он был отправлен с формой. Или вы можете иметь два столбца для имени (атрибут value) и один для идентификатора (текстовое содержимое).

Для получения более подробной информации, обратитесь к этим link.

+0

Когда вы голосуете, укажите причину, почему. Это отвечает на вопрос эффективно и эффективно. Если это не ответит на ваш вопрос, вы должны предоставить больше кода и быть более понятным. – chRyNaN

+0

Спасибо, что ответили. Я не знаю, кто проголосовал за ваш ответ. Я проверил ваш ответ только сейчас. У меня есть следующие вопросы, основанные на вашем ответе: 1. Если у меня есть только значение = «Джон Доу», тогда как мой снизу будет выглядеть как Jone Doe (ID: 1) 2. Если я использую option.value = name + "(ID:" + id + ")"; сочетание, как может моя ценность отправки быть только именем? Как я уже говорил, я хочу показать больше опций в раскрывающемся списке, но от него передается только частичная информация. – Raghuveer

+0

@ Raghuveer вам нужно будет либо разобрать ответ перед отправкой, удалив идентификатор из значения, либо вам придется иметь два столбца для имени и другого для идентификатора (который я нахожу более эстетичным). Кажется, что нет способа получить именно то, что вы хотите (если не создать пользовательский элемент), но ближайший из них будет одним из вариантов, которые я предоставил. – chRyNaN