我有一个实现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 :(得分:1)
这似乎是最近几个版本的一个问题。这些问题已经解决Here,主要是Here。解决方法只是添加一个setTimeout来从Chosen元素中删除所选类,并等待一点(足以让下一个循环执行)然后关注:
$("select").chosen().on('change', function(evt, params) {
setTimeout(function(){
$(this).removeClass('chosen-container-active');
$('#additionalDetails').focus();
}, 0);
});
鉴于您的标记的性质(您使用的是Razor),我建议您在JavaScript中使用它,以提高可读性。
JSFiddle :http://jsfiddle.net/q22vy16j/