小部件位于表单内,但是
form.reset()
不会清除先前选中的CheckedMultiSelect值。
var list = new CheckedMultiSelect({
dropDown: true,
labelText: 'States',
multiple: true,
name: 'state',
onChange: getValues,
required: false
}, "stateSelect");
我在下面尝试过代码,但它不起作用。
list.reset()
提前致谢
答案 0 :(得分:6)
您可以通过CheckedMultiSelect
更改list.set('value',[...])
的值。当列表不为空时,选择会立即更新...
要清除选择,请致电:
list.set('value',[]);
list._updateSelection();
在 Dojo 1.9.2。
上进行测试答案 1 :(得分:3)
这是因为dojox/form/CheckedMultiSelect
没有正确实现reset()
行为。就像Lukasz提到的那样,它只是在列表不为空时才更新选择。
因此,您可以创建自己的实现:
declare("dojox/form/FixedCheckedMultiSelect", [ CheckedMultiSelect ], {
reset: function() {
this.inherited(arguments);
if (!this._resetValue || !this._resetValue.length) {
this._updateSelection();
}
}
});
这将正确重置您的字段。但请注意,重置多选时,它将重置为默认值。如果您默认使用selected
上的<option>
属性选择了某些选项,则会重置为这些值。
如果您想确保在重置时始终取消选中所有项,那么您应该在实施中添加一行,以便它变为:
declare("dojox/form/FixedCheckedMultiSelect", [ CheckedMultiSelect ], {
reset: function() {
this._resetValue = [];
this.inherited(arguments);
if (!this._resetValue || !this._resetValue.length) {
this._updateSelection();
}
}
});
我也做了一个例子JSFiddle。