2

У меня есть раскрывающийся список, который реализует плагин Chosen. Когда выбрана опция, курсор предполагается помещать в текстовое поле на той же странице. Я пытаюсь использовать атрибут onChange выпадающего списка, чтобы выполнить это, но он не работает. Событие onChange запускается, но фокус остается на выпадающем списке.Выбранный выпадающий фокус

Когда я отключен Избранный, он работает отлично. Поэтому я знаю, что это имеет какое-то отношение к плагину, но я не знаю, в чем проблема.

Почему выпадающее меню Chosen предотвращает переключение фокуса на jQuery?

Соответствующий HTML:

<!--Unrelated code has been removed--> 
<div class="mws-form-col-8-8 "> 
    <div class="mws-form-item large"> 
    @Html.DropDownList("addOtherProvision" + chargeId, Model.otherProvisionDropdown, "", 
          new { onchange = "$('#additionalDetails').focus();", 
           id = "addOtherProvision" + chargeId }) 
    </div> 
</div> 

<div id= "@(chargeId)otherProvisionDialog" class="mws-panel-body" 
    title="Add Additional Details"> 
    <div class="mws-form-cols clearfix"> 
     <div class="mws-form-item large"> 
      @Html.TextBox("additionalDetails", "", new {id = "additionalDetails", 
          @class = "mws-textinput" }) 
     </div> 
    </div> 
</div> 
+0

Вы получаете какие-либо исключения в консоли? –

+0

@ HanletEscaño Нет, я не получаю никаких исключений. – numaroth

ответ

1

Похоже, это была проблема с последней парой версий. Они были адресованы Here и главным образом Here. Обходной просто добавляет setTimeout, который удаляет выбранный класс из элемента Избранного, и жду немного (достаточно для следующего цикла для выполнения) и фокусируется затем:

$("select").chosen().on('change', function(evt, params) { 
    setTimeout(function(){ 
     $(this).removeClass('chosen-container-active'); 
     $('#additionalDetails').focus(); 
    }, 0); 
}); 

Учитывая характер вашей разметки (вы используя Razor) Я бы предложил использовать это в вашем JavaScript, чтобы улучшить читаемость.

JSFiddle: http://jsfiddle.net/q22vy16j/

Смежные вопросы