Dojo 1.9:Dijit:禁用使用商店填充的 dijit/表单/筛选选择中的选项项
Dojo 1.9: Dijit: Disabling option items in a dijit/Form/FilteringSelect that was populated using a store
我正在尝试禁用使用 store
填充的 dijit/Form/FilteringSelect 控件中的选项项。
遵循本指南:http://dojotoolkit.org/documentation/tutorials/1.9/selects_using_stores/
似乎只有在不使用存储的情况下创建 Select 控件时才有可能。我从调试 FilteringSelect 示例中推断出了这一点。我尝试了两种方法来禁用项目:
-
遵循此线程中的建议:如何在 dijit.form.Select 中禁用单个选项?但是,FilteringSelect 示例中的"stateStore"存储对象没有"选项"属性。
-
尝试访问存储对象中的相应元素。例如,在"筛选选择"示例中,我执行以下操作:
var optionItem = stateStore.get("AZ"); optionItem.disabled = true; stateStore.put(optionItem); select.startup();
这两种方法似乎都不起作用,因此似乎在 Dijit Select 控件中禁用项目的唯一方法是改用 options
属性。提前感谢您的解决方案!
商店中的数据(实际上是业务数据)和呈现的数据(包含视图逻辑)之间存在差异。如果您使用商店,则实际上是将呈现的数据与商店一起提供。
要更改呈现的数据(= 您选择的选项),您需要使用 API 文档中可以阅读的dijit/form/Select
的 getOptions(idx)
方法。要更改选项的disabled
状态,您可以使用:
registry.byId("mySelect").getOptions(myId).disabled = true;
这就是您所需要的。更改商店数据无济于事,因为它表示业务数据,而不是视图数据。我还做了一个示例JSFiddle,其中第二个选项被禁用。
对于 Dojo 1.10 和最高 1.x 的最新版本,您需要添加一行代码来更新选择 UI:
registry.byId("mySelect").getOptions(myId).disabled = true;
registry.byId("mySelect").updateOption(myId);
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Ajax发布表单序列化,发布引号'
- 多级HTML表单
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 在验证和发送邮件后更改联系人表单的 html
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- Javascript更新孙窗口中的表单元素
- 解析javascript表单验证器
- Dojo 1.9:Dijit:禁用使用商店填充的 dijit/表单/筛选选择中的选项项
- Dojo表单.如何显示关于不正确填写的表单元素的错误,如dijit方法validate()所做的
- 使用内存存储填写Dijit表单选择