Как переопределить метод фокусировки элемента управления dojo на FF - PullRequest
1 голос
/ 28 октября 2011

У нас есть приложение, использующее элементы управления dijit. Предыдущее поведение на pre FF6, когда элемент управления сфокусирован, также выбирается. Однако, начиная FF6, элемент управления больше не выделяет весь текст. Проблема в том, что в нашем коде много dojo.byId ('ctrlId'). Focus (). Я могу это исправить, добавив код dojo.byId ('ctrlId'). Select () после каждого вызова фокуса. но я ищу более глобальный способ исправить это.

Я попытался переопределить метод фокусировки, но он не работает.

HTMLFormElement.prototype._select = HTMLFormElement.prototype.select;
dijit.prototype.focus = function() {
    this.focus.apply();
    this.select.apply();
}

Есть идеи?

1 Ответ

2 голосов
/ 28 октября 2011

Во-первых, вы должны использовать dijit.byId, а не dojo.byId. Dijits являются сложными классами, и использование dijit.byId гарантирует, что вы нацеливаетесь на правильные вещи.

Во-вторых, какой Dijit вы используете? Вы можете увидеть список здесь: http://dojotoolkit.org/api/1.6/dijit/form

В-третьих, я не совсем уверен, что вы подразумеваете под «когда элемент управления сфокусирован, он также выбирается». Вы имеете в виду, что текст внутри диджита выделен?

Предполагается, что мы имеем дело с dijit.form.TextBox, как насчет перехвата события фокуса и принудительного выбора? Примерно так:

dojo.connect( dijit.byId('ctrlId'), 'focus',  function() { dojo.query( 'input', dijit.byId('ctrlId' ).domNode )[0].select() } );

(Я не проверял это, но вы поняли идею, я надеюсь.)

...