如何在FF上覆盖dojo控件焦点方法

时间:2011-10-28 09:45:07

标签: dojo setfocus textselection firefox6

我们有一个使用dijit控件的现有应用程序。当控制被聚焦时,前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 个答案:

答案 0 :(得分:2)

首先,您应该使用dijit.byId而不是dojo.byId。 Dijits是复杂的类,使用dijit.byId将确保你的目标是正确的。

其次,你使用哪个Dijit?您可以在此处查看列表:http://dojotoolkit.org/api/1.6/dijit/form

第三,我不完全确定你的意思是“当控制集中时它也会被选中”。你的意思是选择了dijit里面的文字吗?

Assumig我们正在处理dijit.form.TextBox,如何捕获焦点事件并强制选择?像这样:

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

(我没有对此进行过测试,但你得到了我希望的想法。)