получить значение шкафов select2 jquery - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь получить значение closest() select2, откуда я нажимаю кнопку сохранения .save_entry.

Я пытаюсь получить значение выбора с помощью $(this).closest('select').val();, но оно возвращает неопределенное значение. Я перепробовал много вариантов, но поскольку select2 генерирует другой HTML, кажется, есть проблема с ближайшими попытками получить это значение. У меня есть несколько вариантов выбора на странице, поэтому я должен использовать класс.

Как получить значение ближайшего выбора?

<div class="input-group">
    <select class="form-control select2custom" style="width: 100%">'+data+'</select>
    <span class="input-group-btn">
        <button class="btn btn-primary btn-sm save_entry" type="button" data-id="'+row_id+'">
            <i class="fas fa-check"></i>
        </button>
    </span>
</div>

Jquery

$(document).on('click', '.save_entry', function() {
    var new_value = $(this).closest('select').val();
})

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Ответ Таплара хороший, вы также можете заменить свой delegateTarget (здесь document) классом input-group, чтобы упростить выбор select.

$('.input-group').on('click', '.save_entry', function(e){
   
   console.log( $(e.delegateTarget).find('select').length )
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-group">
    <select class="form-control select2custom" style="width: 100%">'+data+'</select>
    <span class="input-group-btn">
        <button class="btn btn-primary btn-sm save_entry" type="button" data-id="'+row_id+'">
            <i class="fas fa-check">Click me</i>
        </button>
    </span>
</div>

ВНИМАНИЕ: Когда вы вызываете это объявление события, вы должны быть уверены, что .input-group разметка присутствует для работы.

0 голосов
/ 26 июня 2018

closest() ищет только родителей элемента. Элемент select не является родителем кнопки. Найдите div, затем найдите дочернего элемента.

Учитывая вашу разметку, один из возможных способов сделать это - найти ближайшую группу ввода, а затем найти вложенный элемент select2custom, который является элементом select.

$(this).closest('.input-group').find('.select2custom')
...