2009-03-26 8 views
4

私のextjsフォームを検証したいと思います。テキストフィールドが空の場合、警告ボックスが表示され、その後にカーソルがテキストボックスにフォーカスする必要があります。私は以下のコーディングで試しました。アラートは正常に動作しています。カーソルはフォーカスしていません。誰かに集中してもらえますか?メッセージボックスが非同期であるextjを使った後のテキストボックスのフォーカスExt.MessageBox.alert

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

答えて

8

documentation状態:メッセージボックスが 非同期であることを

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

したがって、ユーザがExt.MessageBox.alertを呼び出した直後にfocus()が実行されます。ユーザーがクリックして警告を閉じると、フォーカスが再び変更されます。

代わりに通常のjavascript alert()を使用してみてください。これは同期的です。

+1

を試してみてください。私はregulerのjsコードと Ext.get( 'first')。dom.focus()も試しました。しかし、私は間違っていません。 –

6
if (Ext.get("first").dom.value == "") { 
    Ext.MessageBox.alert("Status", "Enter your First Name!", function() { 
     Ext.get("first").focus(); 
    }); 
} 
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); 
      } 
    }); 
} 
関連する問題