Как получить значение текущего выбранного Selectize.элемент ввода js
мне было интересно, как я могу получить значение текущего выбранного элемента в моем Selectize.вход js? Я проверил документацию и перерыли все selectize.js связан с Stackoverflow, но не нашел ничего на пути примера, который я мог бы уйти. Есть идеи? Вот что я думал, будет работать на основе документации, но вместо этого дал мне Undefined is not a function
ошибка.
обратите внимание на самую нижнюю часть кода, где я использую select.on('change'
; это (в дополнение к другим API методы) - это то, что я пробовал. On change работает отлично, но, к сожалению, ничего другого не имеет.
var select = $('#searchTextbox').selectize({
maxItems: 1, //Max items selectable in the textbox
maxOptions: 30, //Max options to render at once in the dropdown
searchField: ['text'], //Fields the autocomplete can search through. Example of another searchable field could be 'value'
openOnFocus: true,
highlight: true,
scrollDuration: 60, //currently does nothing; should say how many MS the dropdown and drop up animations take
create: false, //Whether or not the user is allowed to create fields
selectOnTab: true,
render: {
option: function(data, escape) {
var valueArray = [];
valueArray[0] = data.value.split(",");
var color = valueArray[0][0] == "1" ? "green" : "red";
return '<div class="option" style="color: '
+ color
+ ';">'
+ escape(data.text)
+ '</div>';
},
item: function(data, escape) {
var valueArray = [];
valueArray[0] = data.value.split(",");
var color = valueArray[0][0] == "1" ? "green" : "red";
return '<div class="option" style="color: '
+ color
+ ';">'
+ escape(data.text)
+ '</div>';
}
}
});
select.on('change', function() {
var test = select.getItem(0);
alert(test.val());
});
3 ответов
нашел проблему!
для тех, кто использует selectize.js и проблемы с API, попробуйте это!
Если вы посмотрите на часть кода, где я инициализировал selectize.раскрывающийся список js, я храню экземпляр в моей переменной "select", и все. Однако, это не правильный способ делать вещи (из того что я видел по крайней мере). Вам нужно сделать следующее, а не просто хранить экземпляр в переменная.
var $select = $("#yourSelector").selectize({
//options here
});
var selectizeControl = $select[0].selectize
после этого вы можете использовать API правильно. Не делая этого таким образом, я получал Undefined is not a function
ошибка.
наконец, чтобы ответить на мой собственный вопрос, я смог получить текущее значение ввода selectize, используя следующий код (the .on ('change') и alert, очевидно, не нужны):
selectizeControl.on('change', function() {
var test = selectize.getValue();
alert(test);
});
почему это необходимо сделать таким образом, я не совсем уверен. Возможно, кто-то мог бы просветить меня и любых будущих зрителей, как почему этот способ работает, а мой предыдущий метод-нет.
Я надеюсь, что это поможет кому-то еще в будущем. Не стесняйтесь редактировать и вносить любые изменения.
вместо того, чтобы присоединять событие позже, вы можете сделать это в инициализации:
var select = $('#searchTextbox').selectize({
maxItems: 1, //Max items selectable in the textbox
maxOptions: 30, //Max options to render at once in the dropdown
...
onChange: function(value) {
alert(value);
}
});
Проверьте docs дополнительные вызовы.
в моих тестах selectize imediatelly обновляет значение <select>
он "заменен" (на самом деле он скрывает только <select>
используя display: none
).
так что если вы не хотите использовать обратные вызовы, ни глобальных переменных, это так просто:
$('#id_of_the_select_element_you_called_selectize_on').val()
.