select2 - отправить форму при выборе

это может быть простой вопрос, но я еще не настолько уверен в JavaScript.

Я хочу иметь форму поиска с автозаполнением с помощью select2.

Когда пользователь выбирает результат в раскрывающемся списке select2, я хочу сразу же отправить форму поиска, чтобы мне не нужна была кнопка для формы.

Я нашел обработчик события select2:select, но он не работает. Любая помощь?

Мой select2 работает нормально, и если я включу кнопку, я могу отправить форму и получить идентификатор выбранного объекта:

<form action="" method="get" id="project-search">
        <select class="form-control"
                data-autocomplete-light-function="select2"
                data-autocomplete-light-url="/output/project-autocomplete/"
                data-placeholder="Suche nach Projektnr. oder Projektleiter"
                id="id_projekt" name="projekt">
            <option value="" selected="selected">----------</option>
        </select>
</form>

Этот фрагмент javascript, похоже, не работает:

<script type="text/javascript">
    $(document).ready(function() {
    $eventSelect.on("select2:select", function() {
       console.log("select2:select");
       $(this).parents('form').submit();
    });
});
</script>

Изменить: я получаю это сообщение об ошибке в своей консоли Chrome:

Uncaught ReferenceError: $eventSelect is not defined

Благодарю вас!

Я использую django с django-autocomplete-light для серверной части, кстати.


person teconomix    schedule 21.09.2016    source источник


Ответы (1)


https://api.jquery.com/change/

Jquery имеет функцию, способную обнаруживать изменения при выборе/флажках. Пытаться:

$('#id_projekt').change(function(){ $('#project-search').submit(); });

person Berry M.    schedule 21.09.2016
comment
Большой! Кажется, это работает, спасибо! Мне просто любопытно, и я хотел бы лучше понять - почему бы вам не использовать событие select2: select? Или почему это даже не нужно? - person teconomix; 22.09.2016
comment
Событие select делает что-то совершенно другое. Вот хороший пример: w3schools.com/jsref/tryit.asp?filename=tryjsref_onselect_html. Кроме того, если вы еще не поняли, $().change() делает то же самое, что и $().on('change'). - person Berry M.; 22.09.2016