jQuery专注于不使用所选的插件

时间:2012-01-29 12:14:19

标签: javascript jquery

  

可能重复:
  Jquery Chosen focus on page load (onLoad?)

我正在使用选择的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/

插件中是否指定了任何其他方法或事件来聚焦元素?

4 个答案:

答案 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上工作。如果有人可以建议更好的解决方案 - 我很乐意采纳它。