我们有一个使用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();
}
有什么想法吗?
答案 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() } );
(我没有对此进行过测试,但你得到了我希望的想法。)