使用 javascript 设置选定的值不起作用。 我知道 selected() 将类 single_examplechzn_o_0 添加到<li>
与选项值没有任何共同之处,并且在 selected() 之后不再存在 #single_example。 有没有办法可以工作?
这有效:
```
$("#single_example").val(2);
``````
这不起作用:
```
``````
$("#single_example").val(2);
试试我的分支(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({});
最有用的评论
谢谢@stof ,这成功了。
仅供参考,使用 jQuery 动态更改值: