我正在使用选择的jQuery插件(http://harvesthq.github.com/chosen/)来创建更多有用的选择框。
但是,jQuery焦点事件无法使用此插件。
我的HTML代码:
<select class="product">
<option value="1">Product One</option>
<option value="2">Product Two</option>
</select>
和javascript代码:
$('.product').chosen().focus();
它没有聚焦元素..
这是我的jsFiddle:http://jsfiddle.net/JigneshManek/queZ6/11/
插件中是否指定了任何其他方法或事件来聚焦元素?
答案 0 :(得分:10)
这个库看起来很不错,但除了设置初始参数外,它似乎不允许你与它接口。
仍然,试试这个:
$('.chzn-single').focus(function(e){
e.preventDefault();
});
$('button').click(function() {
$('.chzn-single').focus();
});
$('.chzn-single')
是一个a
元素,通过tabbing聚焦,Chosen监听该事件并触发字段激活并聚焦容器。我需要在点击事件上添加preventDefault
,以便将注意力集中在容器上。
无论如何,它似乎都有效。
答案 1 :(得分:8)
以下似乎对我有用:
$('.chzn-container').mousedown();
答案 2 :(得分:1)
问题是您的原始选择框不再存在,并且已被<div>
和一些<ul>
取代,因此输入上的标准浏览器行为focus
控制不再相关。您需要查看库,并了解如何捕获keydown事件以创建虚拟焦点。如果你很幸运,图书馆的作者会想到这一点,并为你提供了一些帮助。
答案 3 :(得分:0)
这个主题已经差不多一年了,但对于那些可能需要它的人来说:
从选择下拉列表中的元素后重新聚焦字段我编辑了所选源代码: 内部函数* Chosen.prototype.choice_build = function(item){*: 加入
this.container_mousedown();
这是一个肮脏的黑客和部分解决方案,以实现重新聚焦,但它似乎在插件的v.0.9.8上工作。如果有人可以建议更好的解决方案 - 我很乐意采纳它。