現在、Phonegap1.6.0とSenchaTouch1.1を使用してWebベースのモバイルアプリを作成しています。このアプリは、ユーザーがクリックできるいくつかのパネルで構成されています。これらのパネルの一部には、テキストフィールドまたはテキストエリアがあります。パネルに入ると、これらが自動的にフォーカスされるようにします。これはテキストフィールドでは機能するようですが、テキストエリアでは機能しません。
次のコンポーネントを備えたパネルがあります。
xtype: 'textareafield',
cls: 'jasbackblock',
id: 'addreactiontextarea',
height: '100%',
grow: true,
listeners: {
afterrender: function(cmp) {
console.log('Component rendered.');
cmp.fieldEl.dom.focus();
}
私が最初にパネルを開くときはいつでも、それは自動的に焦点を合わせます、それは良いことです。しかし、パネルを離れてパネルに戻ると、イベントでこれを行うための良い方法を考えることができません。私は以前にパネルでショーリスナーを試しました:
listeners: {
show: function(cmp) {
Ext.get('addreactiontextarea').fieldEl.dom.focus();
}
}
これにより、次のエラーが発生します。
Uncaught TypeError: Cannot read property 'fieldEl' of null
ショーイベント中は要素にアクセスできないようです。パネルが読み込まれるたびに発生し、テキストエリアにアクセスできるようにする、使用できるイベントは他にありますか?
ヘルプがある場合、これは、あるパネルから別のパネルに切り替えるために呼び出すメソッドです。
function switchScreen(from, to, newArgs) {
/* Save screen information. */
if (from != -1)
historyStack.push([from, screenArgs]);
if (currentPage > 2) {
if (to != 3)
main.getComponent(3).hide();
app.getComponent(currentPage - 3).hide();
}
else
main.getComponent(currentPage).hide();
screenArgs = newArgs;
if (to > 2) {
main.setActiveItem(3);
app.setActiveItem(to - 3);
/* setActiveItem does not fire a screen's show event if it has been
* shown before. Since we want the code in the screen's show listener to
* be executed every time we switch to the screen, we call show manually
* just to fire the event. */
main.getComponent(3).show();
app.getComponent(to - 3).show();
}
else {
main.setActiveItem(to);
main.getComponent(to).show();
}
if (to == 0 || to == 1)
adMode = to;
else
adMode = -1;
currentPage = to;
}