Я хочу добавить кнопку в первом элементе списка в «Добавить новый элемент». Если пользователь нажимает на эту кнопку, мне нужно открыть всплывающее окно и получить данные от пользователей. Как это сделать в плагине select2? Являются ли какие-либо параметры по умолчанию для этого (или) необходимости настроить это?Мне нужно добавить опцию «Добавить новый элемент» в Select2
ответ
Вы можете добавить новую опцию в выбор2 таким образом
$('button').click(function(){
var value = prompt("Please enter the new value");
$(".mySelect")
.append($("<option></option>")
.attr("value", value)
.text(value));
})
в основном то, что предложенный KLD, но без дополнительных кнопок, как я понимаю, OP хочет использовать первый вариант select
для запуска нового значения модальной. Он проверяет значение, когда выбрано событие select2: close, и если выбрано "NEW"
, запрашивает новое значение, добавляет в конце select
поле и выбирает его.
ПРИМЕЧАНИЕ: Я отключил поиск в вход и добавлен заполнитель
$(function() {
$(".select2")
.select2({
placeholder: 'Select type',
width: '50%',
minimumResultsForSearch: Infinity
})
.on('select2:close', function() {
var el = $(this);
if(el.val()==="NEW") {
var newval = prompt("Enter new value: ");
if(newval !== null) {
el.append('<option>'+newval+'</option>')
.val(newval);
}
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<select id="mySel" class="select2">
<option></option>
<option value="NEW">Add new type</option>
<option>Car</option>
<option>BUS</option>
<option>TWO</option>
<option>THREE</option>
</select>
Может быть, вы должны использовать tags
варианты?
https://select2.github.io/options.html#can-options-be-created-based-on-the-search-term
"нажмите на эту кнопку, мне нужно открыть поп -up "используя теги, это не положено sible ... – user2976753
jQuery("#select2-"+yourelementid+"-container").off().on('click',function(){
jQuery("#yourelementid"_add").remove();
jQuery("#select2-"+yourelementid+"-results").after("<div id='"+yourelementid+"_add' >optionnameforadding</div> ").promise().done(function(){
jQuery("#"+yourelementid+"_add").off().on('click',function(){
// yourfunctionfordisplayingdiv
});
});
});
вы можете добавить содержимое HTML после списка уль - ВЫБ.2 - "+ yourelementid +" - результаты, и делать все, что вы можете с ним. просто установить результат как вал в поле выбора
После покопаться по этому вопросу в течение достаточно долгого времени ... Я думаю, У меня есть решение этой проблемы.
Я заметил, что Select2, кажется, создает свою собственную структуру внутри DOM - независимо от того, с кем вы взаимодействуете. - Это также совершенно не зависит от выбора, который вы, возможно, создали в другом месте DOM.
Так .... После того, как некоторые пустячный вокруг - я придумал следующий код:
Первое: Создание глобального связывания для всех Selects в DOM. Это только для установки временной ссылки на «то, с чем» работает текущий пользователь, - создание глобальной переменной, которая может быть использована позже.
$('select').select2().on('select2:open', function() {
// set a global reference for the current selected Select
console.log('found this ---> '+$(this).attr('id'));
if (typeof tempSelectedObj === 'undefined') {
tempSelectedObj = null;
}
tempSelectedObj = this;
});
Второе: Создать «» KeyUp события документа, который отображается на временный ВХОД Select2 и класс Выбор2-search__field. Это приведет к захвату всех ключевых событий для Select2 INPUT. Но в этом случае я добавил keyCode === 13 (символ возврата), чтобы начать волшебство.
$(document).on('keyup','input.select2-search__field',function (e) {
// capture the return event
if (e.keyCode === 13) {
var newValue = $(this).val();
console.log('processing this: '+newValue);
// create new option element
var newOpt = $('<option>')
.val(newValue)
.text(newValue);
// append to the current Select
$(tempSelectedObj)
.append(newOpt);
// apply the change and set it
$(tempSelectedObj)
.val(newValue)
.select2('close');
}
})
При обнаружении символа возврата происходит следующее.
- захвата текущее значение
- создать новый DOM Option Element (JQuery)
- установить значение и текст нового варианта Элемент
- добавляемых новый Option Элемент переменной tempSelectedObj (JQuery)
- пускового механизм выбор2, чтобы закрыть
- установить значение выбор2 на новое значение добавляется
- триггера конечных изменений выбор2 к ди перевести новый вариант
- DONE!
Очевидно, что для этого примера необходимы два раздела кода, но я считаю, что это довольно привлекательный подход к проблеме, с которой сталкиваются многие люди. И это достаточно общее для того, чтобы его можно было легко адаптировать для других целей.
Надеюсь, это поможет! Я боролся с этим на некоторое время.
Вот рабочий пример:
- 1. «select2» Добавить постоянную опцию
- 2. Добавить опцию «Добавить новый ...» в Kendo DropDownList
- 3. Добавить класс в элемент select2
- 4. Мне нужно добавить опцию «щелчок правой кнопкой мыши» в Jtree
- 5. jquery select2 добавить выделенный элемент?
- 6. Мне нужно добавить опцию «где» на мой запрос sql
- 7. Нужно добавить пользовательскую опцию в Ember Select
- 8. WebDriver: добавить новый элемент
- 9. Добавить опцию отборной элемент на втором месте
- 10. Добавить кнопку в новый элемент
- 11. Мне нужно добавить новый объект события с «dayClick» в fullcalendar
- 12. Добавить новый элемент в список
- 13. добавить новый элемент в массив
- 14. Добавить новый элемент в список
- 15. Добавить новый вариант для ui-select2 в угловой js
- 16. Select2 AngularJS - Как добавить динамический элемент тега?
- 17. WizardNewFileCreationPage - можно добавить новый элемент
- 18. Как добавить новый элемент в элемент?
- 19. Добавить новый элемент с jQuery
- 20. , где мне нужно добавить «wait.ignoring» в «ExpectedConditions.visibilityOfElementLocated»
- 21. Мне нужно добавить новый тег всем клиентам-клиентам.
- 22. CircularBuffer, мне нужно добавить замок?
- 23. Когда мне нужно добавить oAuth?
- 24. Добавить новый элемент в вложенный массив
- 25. Как добавить новый элемент в DenseVector
- 26. Как добавить новый элемент в существующий класс?
- 27. listview добавить новый элемент управления
- 28. Мне нужно добавить словарь в словарь словарей
- 29. Реагировать, как добавить новый элемент в состояние?
- 30. Как добавить новый пустой элемент
Я попытался ниже код для Выбор2 https://jsfiddle.net/KpKaran/rqtuk090/ – Prabhakarank
Другое решение: настроить noResults с html-кодом https://stackoverflow.com/questions/37797597/select2-how-to-add-a-link-instead-of-no-results-found-text – markux