Dojo, setAttribute с Internet Explorer

Я работаю над веб-приложением, которое создавал не сам, и это было сделано с помощью Dojo и особенно Dijit. Часть, с которой я борюсь, касается формы, которая изменяется в зависимости от переключателей. Поэтому я использую dijit.byId('id').setAttribute('disabled',true); для отключения поля, и это работает в FF, но не в IE8. Хотя он работает, но не напрямую, когда я устанавливаю переключатель, мне нужно сделать еще одно действие (например, щелкнуть случайную область на странице), и действие будет применено. Я пробовал с такими вещами, как: document.getElementById('id').disabled=true;, но это тоже работает некорректно.

Не могли бы вы что-нибудь посоветовать? Спасибо.


person mentinet    schedule 09.07.2013    source источник
comment
Пара вопросов: какая это версия Dojo? Где (в каких функциях) вы пытались вызвать код отключения?   -  person David    schedule 09.07.2013
comment
Просто чтобы вы знали, два опубликованных вами ответа не являются ответами. Вместо того, чтобы публиковать ответ, который является дополнительным вопросом, вы можете либо отредактировать исходный вопрос, либо задать другой вопрос. В этом случае на ваш первый вопрос о настройке атрибута был дан ответ. Следующую серию ответов следует задавать как отдельный вопрос.   -  person Craig Swing    schedule 09.07.2013
comment
Я не собираюсь редактировать свой первый вопрос. Между моим первым вопросом, ответами, другими вопросами и новыми ответами будет такая путаница. Я не могу ответить как комментарий, так как мои коды не будут отображаться как код.   -  person mentinet    schedule 09.07.2013


Ответы (2)


У виджетов Dojo есть соглашение об установке атрибутов с помощью метода set.

dijit.byId('id').set('disabled',true);

Это соглашение вызовет метод _setDisabledAttr для виджета, который позаботится о своем отключении.

http://dojotoolkit.org/reference-guide/1.7/dijit/_WidgetBase.html#attributes

person Craig Swing    schedule 09.07.2013
comment
Это решение тоже работает, но не решает мою проблему. Я нажимаю свой переключатель, который напрямую меняет статус полей в FF, но мне нужен второй щелчок (где угодно), чтобы увидеть изменения в IE. Спасибо - person mentinet; 09.07.2013

У нас была почти такая же проблема, как и у вас.

Попробуйте dijit.registry, чтобы получить или установить атрибуты для disabled или enabled.

У нас возникла проблема с запросом, который проверял, активен ли тот или иной переключатель. Затем следует читать по одной записи за раз. К сожалению, с dojo.byId это не сработало, поэтому мы искали решение и нашли его, как описано выше в dijit.registry.

Вот ссылка: http://dojotoolkit.org/reference-guide/1.9/dijit/registry.html#dijit-registry

Надеюсь, это поможет тебе.

С уважением, Мириам

person MiBrock    schedule 09.07.2013
comment
Спасибо, я посмотрю на это, если снова столкнусь с этой проблемой, но до сих пор моя проблема была решена с помощью onclick вместо onchange. - person mentinet; 10.07.2013