Chosen: 使用 javascript 设置选定的值

创建于 2011-07-21  ·  25评论  ·  资料来源: harvesthq/chosen

使用 javascript 设置选定的值不起作用。 我知道 selected() 将类 single_examplechzn_o_0 添加到<li>与选项值没有任何共同之处,并且在 selected() 之后不再存在 #single_example。 有没有办法可以工作?

这有效:
```


$("#single_example").val(2);

``````

这不起作用:
```
``````

$("#single_example").val(2);

最有用的评论

谢谢@stof ,这成功了。

仅供参考,使用 jQuery 动态更改值:

$("#single_example").val(2).trigger('chosen:updated');

所有25条评论

试试我的分支(https://github.com/tompaton/chosen)它可能会为你解决这个问题。

不幸的是,它对我不起作用。

您需要手动触发更改事件(据我所知,这很烦人......):

$("#single_example").val(2).trigger("change");

谢谢,这完美!

我做了给你展示的例子有错误,但是当我做 $("#single_example").val(2).trigger("change");
,我在列表中没有任何变化(选定的值)。
我正在使用最新版本的插件。
问候

您需要使用https://github.com/tompaton/chosen ,它尚未合并到 Harveshq 分支中。

是的,它在使用 tompaton 分支后就像魅力一样。

$("#single_example1").val(2);
$("#single_example2").val(3)
...
$("#single_example3").val(20);
$('.chosen').trigger('change');

大家好,我下载了tompaton的fork(https://github.com/tompaton/chosen)我做了:
$("#single_example").val(2).trigger("change");
这就像一个魅力
谢谢你的建议:-)

我正在尝试编写一个 clear all 函数,这似乎不起作用,即使使用 tompaton 分支:
$(".state_list").val("").trigger("change");

我有一个空选项:
```

Is there a way to totally remove all selections? Also how about selecting all?

抱歉,我的补丁没有解决多选框,这需要
更多的代码......

2011 年 8 月 12 日星期五凌晨 1:50,MB34
回复@reply.github.com
写道:

我正在尝试编写一个 clear all 函数,这似乎不起作用,即使使用 tompaton 分支:
$(".state_list").val("").trigger("change");

我有一个空选项:

有没有办法完全删除所有选择? 另外选择全部怎么样?

直接回复此邮件或在 GitHub 上查看:
https://github.com/harvesthq/chosen/issues/31#issuecomment -1782941

那么有没有办法在不修补插件的情况下做到这一点?

好的,如果您愿意将自己锁定在 selected 的内部如何工作,那么可以在不打补丁的情况下从多选中清除所有选择:

// replace {select_id} below with the id of your <select> tag
$('#{select_id}_chzn .chzn-choices .search-choice a').click();

这将模拟在多选中单击每个选定项目上的删除“x”。

也可以选择所有选项(通过模拟单击下拉列表中的所有可用选项):

$('#{select_id}_chzn .chzn-drop li').click();

这些需求确实应该作为方法添加到所选插件中。

好的,澄清这一切:

@pfiller指出,这在 Harvesthq/chosen 分支中都是可能的,使用:

$("#single_example").val(2).trigger("liszt:updated");

我没有足够彻底地阅读代码/文档,这很糟糕。 这也适用于多个选择框。

可以通过以下方式清除多项选择中的所有选项:

$('#{select_id}').val([]).trigger('liszt:updated');

我认为我之前的评论仍然是选择所有选项的唯一方法。

_注意_我的fork现在和harveshq/chosen在这方面是一样的,所以只需使用它并忽略.trigger('change')的东西。

对于那些可能正在使用 Prototype 适配器的人,您可以执行以下相同的操作:

  $(select_box_id).select('option[selected]').each(function(el){el.selected = false});
  Event.fire($(select_box_id), 'liszt:updated')

有点笨重,但它的工作原理。 如果有更好的方法来做这个 lemmie know

我使用的解决方案是更改原始源选择上的选定选项,然后重新构建选择。

select.val(value);
select.chosen('destroy');
select.chosen({});

@roelvanduijnhoven @tompaton评论中给出的解决方案(或由@RyanS给出的原型版本)更好,因为它更新了现有的选择元素而不是破坏它并构建一个新元素

出于某种原因, @tompaton的解决方案似乎不适用于我的情况。 虽然没有付出太多努力,所以也许我做错了什么。

@roelvanduijnhoven如果您使用的是 1.0 版,则该事件现在是chosen:updated

谢谢@stof ,这成功了。

仅供参考,使用 jQuery 动态更改值:

$("#single_example").val(2).trigger('chosen:updated');

作为参考,这被记录在案: http ://harvesthq.github.io/chosen/#change -update-events

抱歉@roelvanduijnhoven ,我的评论是针对另一个问题的,我现在已将其删除。 (gmail已将电子邮件分组,我通过回复发表评论)

非常感谢! 这个线程拯救了我的一天!
最后我有默认值的多选:)

嗨,我是新 jquery,刚刚下载选择。 我对如何在选择中设置/获取多个值感到困惑。

我要做的是在页面加载时动态创建选项然后需要选择默认值

谢谢
九里

gpdhillion:
用这个
$('.chosen-select').val([1,2,3]).trigger('chosen:updated');

$ ("#id").val(id_value);
$("#id").chosen('destroy');
$("#id").chosen({});

此页面是否有帮助?
0 / 5 - 0 等级