4

extjs フォームを検証したい。テキスト フィールドが空の場合、警告ボックスが表示され、その後カーソルがテキスト ボックスにフォーカスする必要があります。以下のコーディングで試してみました。アラートは正常に機能しています。しかし、カーソルは焦点を合わせていません。誰か集中するのを手伝ってくれませんか?

if(Ext.get('first').dom.value=='')
{
    Ext.MessageBox.alert('Status', 'Enter your First Name!');
    document.getElementById("first").focus();
}
4

3 に答える 3

8

ドキュメントには、MessageBox は非同期であると記載されています。

MessageBox は非同期であることに注意してください。通常の JavaScript アラート (ブラウザーの実行を停止します) とは異なり、MessageBox を表示してもコードは停止しません。このため、MessageBox からのユーザー フィードバックの後にのみ実行するコードがある場合は、コールバック関数を使用する必要があります (詳細については、show の関数パラメーターを参照してください)。

したがって、 focus() は Ext.MessageBox.alert への呼び出しの直後に実行され、ユーザーがアラートを閉じたときではありません: ユーザーがクリックしてアラートを閉じると、フォーカスが再び変更されます。

代わりに、同期的な通常の javascript alert() を使用してみてください。

于 2009-03-26T08:46:19.740 に答える
6
if (Ext.get("first").dom.value == "") {
    Ext.MessageBox.alert("Status", "Enter your First Name!", function() {
        Ext.get("first").focus();
    });
}
于 2009-04-13T14:31:51.727 に答える
1

これを試して


if(Ext.get('first').dom.value=='')
{
     Ext.Msg.alert('Status', 'Enter your First Name!', function(btn, text){
          if (btn == 'ok'){
               Ext.getCmp('first').focus(true,10);
          }
     });
}
于 2009-07-01T22:24:14.300 に答える