2011-10-28 24 views
1

。當控制集中時,前FF6之前的行爲也被選中。但是,啓動FF6控件不再選擇所有文本。現在的問題是我們的代碼中有很多dojo.byId('ctrlId')。focus()。我可以通過在每次焦點調用後添加一個dojo.byId('ctrlId')。select()代碼來解決這個問題。但我正在尋找一種更全面的方法來解決這個問題。如何覆蓋道場控制對焦方式上,我們使用的dijit控制現有的應用FF

我試圖重寫對焦方式,但它不工作。

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

任何想法?

回答

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() }); 

(我沒有測試過這一點,但你的想法,我希望)

+0

嗨voidstate,是我使用diji.form.TextBox。是的,選擇意味着選擇當前文本框中的所有文本。我可以做焦點事件,但這意味着我需要爲控件的所有實例編寫一個連接語句。我想知道是否有可能通過一個單一的代碼文本框的所有實例。所以如果我調用focus()方法,它只是選擇文本框內的所有文本。 – Nap