Chcę dodać przycisk w pierwszym elemencie listy do "Dodaj nowy element". Jeśli użytkownik kliknie na ten przycisk, muszę otworzyć wyskakujące okienko i uzyskać dane od użytkowników. Jak to zrobić w plugin select2? Czy jakiekolwiek domyślne opcje tego (lub) wymagają dostosowania tego?Muszę dodać opcję "Dodaj nowy element" w Select2
Odpowiedz
Możesz dodać nową opcję do Select2 tędy
$('button').click(function(){
var value = prompt("Please enter the new value");
$(".mySelect")
.append($("<option></option>")
.attr("value", value)
.text(value));
})
zasadzie co sugerowane KLD, ale bez dodatkowych przycisków jak rozumiem PO chce wykorzystać pierwszą opcję select
wywołać nową wartość modalna. Sprawdza wartość po wywołaniu zdarzenia select2: close i wybraniu "NEW"
, wyświetla monit o podanie nowej wartości, dodaje na końcu pola select
i wybiera go.
UWAGA: mam przeszukiwanie niepełnosprawnych w wejściu i dodał zastępczy
$(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>
może być należy użyć tags
opcji?
https://select2.github.io/options.html#can-options-be-created-based-on-the-search-term
"kliknij ten przycisk, aby otworzyć pop "używając znaczników to nie jest pos 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
});
});
});
można dodać zawartość HTML po wykazie ul - select2 - "+ yourelementid +" - wyniki, i robić, co można z nim. wystarczy ustawić wynik jako Val z zaznaczonym polu
Po kopania wokół na ten temat od dłuższego czasu ... Ja myśl Mam rozwiązanie tego problemu.
Zauważyłem, że Select2 wydaje się tworzyć własną strukturę w DOM - niezależnie od Select, z którym współpracujesz. - Wydaje się, że jest to całkowicie niezależne od selekcji, którą możesz utworzyć w innym miejscu w DOM.
Więc .... Po jakiś błahy wokół - wpadłem na następujący kod:
pierwsze: Tworzenie globalnej wiążące dla wszystkich Wybiera w DOM. Jest to tylko ustawienie chwilowego odniesienia do "tego, z czym pracuje bieżący użytkownik" - tworzenie zmiennej globalnej, która może być później używana.
$('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;
});
drugie: Utwórz dokument 'keyup' wydarzenie, które są mapowane do tymczasowego WEJŚCIE Select2 i klasy select2-search__field. Spowoduje to przechwycenie wszystkich kluczowych zdarzeń dla Select2 INPUT. Ale w tym przypadku dodałem keyCode === 13 (znak powrotu), aby zainicjować magię.
$(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');
}
})
Po wykryciu znaku zwrotnego następuje:
- przechwytywania aktualna wartość
- utworzyć nową opcję DOM element (jQuery)
- ustawioną wartość i tekstu nową opcję Element
- dołączy nowa opcja Element zmiennej tempSelectedObj (jQuery)
- spust Wybór2 zamknąć
- ustawić wartość Select2 do nowej wartości dołączane
- spust ostateczna zmiana Wybór2 do dI rozłóż nową opcję
- ZOSTAŁA ZROBIONA!
Oczywiście dla tego przykładu wymagane są dwie sekcje kodu, ale uważam, że jest to całkiem zgrabne podejście do problemu, z którym wiele osób zmaga się. Jest też wystarczająco uniwersalny, by z łatwością można go było dostosować do innych celów.
Mam nadzieję, że to pomoże! Walczyłem z tym przez jakiś czas.
Oto przykład roboczych:
- 1. Dodaj klasę do select2 element
- 2. Dodaj opcję "Klasa" w menu Nowy w perspektywie Java EE
- 3. Select2: dynamicznie dodaj nowy tag przy użyciu kodu
- 4. Dodaj nowy element do listy listach (w R)
- 5. Jak dodać nowy element do ObjectListView?
- 6. Jak dodać nowy element do haszu
- 7. Dodaj nowy element do istniejącej tablicy JSON, używając jq
- 8. Dodaj opcje do Select2 po inicjalizacji
- 9. Select2 4.0.0 AJAX - Wybierz wyróżnioną opcję za pomocą Tab
- 10. Dodaj nowy obiekt do tablicy
- 11. @ Html.DropDownListFor Jak dodać opcję?
- 12. Jak dodać opcję wyboru listy w jQuery
- 13. Jak się ukryć Dodaj nową opcję w Railsie Admin
- 14. Umbraco 7 dodać nowy element do deski rozdzielczej
- 15. Dodaj nowy język do OpenEars
- 16. Dodaj nowy atrybut do krawędzi w siecix
- 17. Dodaj opcję zdalną nie pokazano w PyCharm
- 18. Jak wypalić nowy ajax w zdarzeniu select2 new/remove tag?
- 19. Jak mogę dodać nowy element do tablicy String?
- 20. push_back nowy element do wektora
- 21. Dodaj element do tablicy
- 22. dodać nowy wiersz w tabeli
- 23. Dodaj element w oddzielnych wierszach w listview
- 24. Entity Framework dodać nowy podmiot
- 25. Dodaj element do obiektu JSON w Postgresie
- 26. JQuery Datatables Dodaj nowy wiersz
- 27. Data deware sDom challenge dodaj nowy element w lewym dolnym rogu tabeli
- 28. Użyj wtyczki select2 w aplikacji AngularJS
- 29. Ext 4.1.1: Dodaj nowy rekord do sklepu
- 30. Dodaj nowy plik w Intellij nie dodaje do subversion
Próbowałem poniżej kod do select2 https://jsfiddle.net/KpKaran/rqtuk090/ – Prabhakarank
inne rozwiązanie: dostosować noResults z kodem HTML https://stackoverflow.com/questions/37797597/select2-how-to-add-a-link-instead-of-no-results-found-text – markux