Как сбросить dojo CheckedMultiSelect
Виджет находится внутри формы, однако
Форма.reset ()
Не очищает ранее выбранные значения CheckedMultiSelect.
var list = new CheckedMultiSelect({
dropDown: true,
labelText: 'States',
multiple: true,
name: 'state',
onChange: getValues,
required: false
}, "stateSelect");
Я пробовал код ниже, но он не работает.
Список.reset ()
Заранее спасибо
2 ответа:
Вы можете изменить значение
CheckedMultiSelect
черезlist.set('value',[...])
. Выбор обновляется сразу же, когда список не пуст...Чтобы очистить выделение, вызовите:
list.set('value',[]); list._updateSelection();
Тестируется на Dojo 1.9.2.
Это потому, что
dojox/form/CheckedMultiSelect
не реализовал поведениеreset()
должным образом. Как уже упоминал Лукаш, это только обновление выбора, когда список не пуст.Итак, вы можете, например, создать свою собственную реализацию:
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.