1

我们有一个使用 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();
}

有任何想法吗?

4

1 回答 1

2

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

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

第三,我不完全确定“当控件聚焦时它也被选中”是什么意思。你的意思是dijit里面的文字被选中了吗?

假设我们正在处理 dijit.form.TextBox,那么捕获焦点事件并强制选择怎么样?像这样的东西:

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

(我没有测试过这个,但你明白我希望的想法。)

于 2011-10-28T11:47:15.320 回答