onChange раскрывающегося списка семантического пользовательского интерфейса не срабатывает

Я использую semantic-ui вместе с Django, и у меня есть следующий раскрывающийся список в форме:

HTML

<form id="lang_form" action="{% url 'set_language' %}" method="post">
  {% csrf_token %}
  {% get_current_language as LANGUAGE_CODE %}
  {% get_available_languages as LANGUAGES %}
  {% get_language_info_list for LANGUAGES as languages %}
  <input id="lang_input" name="language" type="hidden">
  <div id="lang_dropdown" class="ui icon dropdown button ">
    <span class="text"></span>
    <div class="menu">
      {% for language in languages %}
        <div class="item" data-value="{{language.code}}">
          <i class="{{language.code|flag_class}} flag"></i>
        </div>
      {% endfor %}
    </div>
  </div>
</form>

Я пытаюсь сначала установить значение раскрывающегося списка с помощью jquery, а затем присоединить функцию к событию onChange.

jquery

$("#lang_dropdown").dropdown('set selected', "{{LANGUAGE_CODE}}");

var flagChange = function(value, text, $choice){
    value = $("#lang_dropdown").dropdown('get value');
    if(value != "{{LANGUAGE_CODE}}"){
      $("#lang_input").val(value);
      $("#lang_form").submit();
    }
};
$("#lang_dropdown").dropdown({
  onChange: flagChange
});

Что происходит: flagChange срабатывает, когда Dropbox изначально установлен, что не является моей основной проблемой, хотя причина, по которой он срабатывает, несмотря на то, что он был прикреплен к onChange ПОСЛЕ первоначального назначения, ускользает от меня .

Основная проблема заключается в том, что flagChange не запускается после этого всякий раз, когда я щелкаю раскрывающийся список и меняю выбранное значение.


person Michael Tedla    schedule 30.04.2015    source источник
comment
Можете ли вы попробовать использовать скрытый ввод внутри вашего #lang_dropdown, который может содержать выбранное значение?   -  person kamil-mrzyglod    schedule 07.05.2015


Ответы (2)


Возможно, вы захотите проверить эту проблему: https://github.com/Semantic-Org/Semantic-UI/issues/3744

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

person Jake Almer    schedule 02.04.2016
comment
Ваша ссылка кажется неработающей. - person tirdadc; 19.04.2016
comment
Это чувство, когда вы гуглите эту проблему, и оказывается, что это я сделал проблему на их трекере ....: / - person Douglas Gaskell; 09.09.2016

Вам следует использовать <select> <option> версию раскрывающегося списка: http://semantic-ui.com/modules/dropdown.html#converting-form-elements.

Я не знаю, как Semantic-UI обрабатывает событие, но imho событие 'change' является базовым html / js-событием и запускается только для таких элементов.

person challet    schedule 25.05.2015