Я пытаюсь настроить форму на своем сайте и хочу использовать динамическое раскрывающееся меню.Получить ID от selectize.js к форме
Я нашел Selectize.js, который кажется хорошим решением, однако я изо всех сил пытаюсь выяснить, как получить идентификаторы из выбранного варианта, когда я отправляю форму.
Как и пользователь выбирает «банан» и selectize должен возвращать 2 в качестве значения для пост
Очевидный ответ, конечно, будет меняться valueField
к 'id'
однако, что портит createFilter
так, что нет не идти ..
Я сделал jsfiddle с тем, что я до сих пор: http://jsfiddle.net/imfpa/Lh3anheq/16/
HTML:
<form>
<select id="item-type" placeholder="Choose type...">
</select>
</form>
JavaScript:
function hasOwnPropertyCaseInsensitive(obj, property) {
var props = [];
for (var i in obj) if (obj.hasOwnProperty(i)) props.push(i);
var prop;
while (prop = props.pop()) if (prop.toLowerCase() === property.toLowerCase()) return true;
return false;
}
var REGEX = '[a-zA-ZæøåÆØÅ][a-zA-ZæøåÆØÅ ]*[a-zA-ZæøåÆØÅ]';
$('#item-type').selectize({
persist: true,
valueField: 'text',
labelField: 'text',
searchField: ['text'],
options: [
{id: '1', text: 'Apple'},
{id: '2', text: 'Banana'},
{id: '3', text: 'Orange'},
{id: '4', text: 'Cherry'},
],
createFilter: function(input) {
var match, regex;
regex = new RegExp('^' + REGEX + '$', 'i');
match = input.match(regex);
if (match) {
console.log(match[0]);
return !hasOwnPropertyCaseInsensitive(this.options, match[0]);
}
return false;
},
create: true
});
1. Не видите, как 'id' ломает' createFilter'. 2. Подумайте, что 'select' должен иметь указанный атрибут name. 3.Ваш 'REGEX' может быть значительно упрощен с помощью' [a-zA-ZæøåÆØÅ] {2,} ', если я исправлю ваше намерение там (вы проверяете минимальную длину 2?). – 0x2D9A3
Благодарим вас за упрощенное регулярное выражение - да, это было мое намерение проверить минимальную длину 2. Вещь с '' 'createFilter''', если я изменю значение' '' valueField'' '' 'id '' '- по какой-то причине без ведома для меня, он всегда будет возвращать' '' true''', тем самым нарушая фильтр, который должен позволить пользователю создавать значения, которые еще не внесены в список. – IanDK
Возможно, мне не хватает что-то, но почему вы разрешаете пользователям создавать новые значения, если допустимые значения * уже * в списке ..? – 0x2D9A3