1

dijit コントロールを使用する既存のアプリケーションがあります。コントロールがフォーカスされているときの FF6 以前の以前の動作は、コントロールも選択されます。ただし、FF6 を開始すると、コントロールはすべてのテキストを選択しなくなります。問題は、コードに dojo.byId('ctrlId').focus() がたくさんあることです。各フォーカス呼び出しの後に dojo.byId('ctrlId').select() コードを追加することで、これを修正できます。しかし、これを修正するためのよりグローバルな方法を探しています。

focus メソッドをオーバーライドしようとしましたが、うまくいきません。

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

何か案は?

4

1 に答える 1

2

まず、dojo.byIdではなくdijit.byIdを使用する必要があります。Dijitsは複雑なクラスであり、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 に答える