2009-03-26 2 views
4

Я хочу проверить свою форму extjs. Когда текстовое поле пуст, должно отображаться окно предупреждения, после чего наш курсор должен сфокусироваться на текстовом поле. Я попробовал с кодировкой ниже. Alert работает нормально. но курсор не фокусируется. Не могли бы вы помочь мне сосредоточиться?Как сфокусировать текстовое поле после использования extjs Ext.MessageBox.alert

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

ответ

8

В documentation говорится, что MessageBox является асинхронным:

Обратите внимание, что MessageBox является асинхронный. В отличие от регулярного оповещения JavaScript (что остановит выполнение браузера ), показывая MessageBox не приведет к остановке кода . По этой причине, если у вас есть код , который должен запускаться только после некоторых обращений пользователей от MessageBox, вы должны использовать функцию обратного вызова (см. Параметр функции для отображения для более подробной информации ).

Итак, ваше внимание() осуществляется сразу же после вызова Ext.MessageBox.alert, не тогда, когда пользователь закрывает его: Когда пользователь нажимает кнопку, чтобы закрыть предупреждение, основное внимание будет снова.

Вы можете попробовать вместо этого использовать обычный javascript alert(), который является синхронным.

+1

я не получаю ответ. но я попытался с кодом регулятора js и Ext.get ('first'). dom.focus() также. Но я не понимаю. – 2009-03-26 08:53:15

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); 
      } 
    }); 
} 
Смежные вопросы