2

我想知道是否可以动态地将新值添加到selected.js多选中(类似于标记的工作方式)。

我在另一个SO 帖子中看到一个用户说这是可能的。他链接到 github 上的一个示例和一个fork,但我在实现这些方面遇到了一些困难。

源代码是用 CoffeeScript 编写的。我尝试将它(使用在线编译器)编译为常规 JavaScript,将代码复制粘贴到空白测试项目中,但出现错误。之后,我也加载了 AbstractChosen 和 SelectParser(将它们编译为 js)并且没有出现错误,但是“动态添加项目”功能不存在(尽管我初始化了上述链接中描述的选择)。

有人用过这个叉子吗?如果是的话,你能分享一下你的经验吗?

4

3 回答 3

3

您遇到的问题是因为您没有按照文档中的步骤操作:

如果您下载源代码,请安装正确的软件包并运行以和结尾的构建chosen.jquery.js命令。chosen.proto.jschosen.css

因此,以下步骤应该为您完成:

  1. 下载:https ://github.com/koenpunt/chosen/archive/option_adding.zip
  2. 安装包:npm install && gem install bundler && bundle install
  3. 运行构建:(grunt build注意,为此你需要grunt cli

编辑

或者为了您的方便,请下载已编译的版本

于 2013-08-13T07:49:30.053 回答
1

文档提到了这个选项:

动态更新选择

如果您需要更新您的选择字段中的选项并希望 Chosen 获取更改,您需要在该字段上触发“chosen:updated”事件。选择将根据更新的内容重新构建自己。

有了这个。

$("#form_field").trigger("chosen:updated");

这可以与

// Add field
$("#form_field").append("<option>Utopia</option>");

$("#form_field").trigger("chosen:updated");

可以在 jsfiddle 中找到将其添加到示例中:http: //jsfiddle.net/E5X9x/

于 2013-08-13T05:42:29.793 回答
0

解决方案在这里

$('select').chosen({plugins: ['option-adding']});

或者

$(function() {
  $(".chzn-select").chosen({
    create_option: true,
    // persistent_create_option decides if you can add any term, even if part
    // of the term is also found, or only unique, not overlapping terms
    persistent_create_option: true,
    // with the skip_no_results option you can disable the 'No results match..' 
    // message, which is somewhat redundant when option adding is enabled
    skip_no_results: true
  });
});
于 2015-10-01T13:00:35.547 回答