如何为 selectize.js 输入设置值?

新手上路,请多包涵

我有一个表单,我想从中将一些默认值复制到输入中。表单输入使用 selectize.js 插件。我想以编程方式设置一些表单值。这样做的标准方法:

 $("#my_input").val("My Default Value");

不起作用。

我试过这样的东西,但它也不起作用。

 var $select = $("#my_input").selectize();
var selectize = $select[0].selectize;
selectize.setValue("My Default Value");

有任何想法吗?它必须很容易 :) 我想念它。

原文由 fat fantasma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 797
2 个回答

查看 API 文档

方法 addOption(data)setValue(value) 可能就是你要找的。


_更新_:看到这个答案的受欢迎程度,这里有一些基于评论/请求的附加信息……

setValue(value, silent)

将所选项目重置为给定值。

如果“ silent ”为真(即: true1 ),则不会在原始输入上触发更改事件。

addOption(data)

添加可用选项或选项数组。如果它已经存在,则什么也不会发生。

注意:这不会刷新选项列表下拉列表(为此使用 refreshOptions() )。


响应选项被覆盖:

这可以通过重新初始化选择而不使用您最初提供的选项来实现。如果您不打算重新创建元素,只需将 selectize 对象存储到一个变量中:

 // 1. Only set the below variables once (ideally)
var $select = $('select').selectize(options);  // This initializes the selectize control
var selectize = $select[0].selectize; // This stores the selectize object to a variable (with name 'selectize')

// 2. Access the selectize object with methods later, for ex:
selectize.addOption(data);
selectize.setValue('something', false);

// Side note:
// You can set a variable to the previous options with
var old_options = selectize.settings;
// If you intend on calling $('select').selectize(old_options) or something

原文由 Tomanow 发布,翻译遵循 CC BY-SA 4.0 许可协议

这对我有用:

 var $select = $("#my_input").selectize();
var selectize = $select[0].selectize;
selectize.setValue(selectize.search("My Default Value").items[0].id);

但你必须非常确定你只有一场比赛。

_更新_:由于此解决方案非常完美,为了使其即使在页面上有多个选择元素的情况下也能正常工作,我已经更新了答案:

以下方式我们可以初始化:

 $('select').each(function (idx) {
    var selectizeInput = $(this).selectize(options);
    $(this).data('selectize', selectizeInput[0].selectize);
});

在初始化后实用地设置值:

 var selectElement = $('#unique_selector').eq(0);
var selectize = selectElement.data('selectize');
if (!!selectize) selectize.setValue("My Default Value");

原文由 onlyblank 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题