Как сфокусировать текстовое поле после использования extjs Ext.MessageBox.alert - PullRequest
4 голосов
/ 26 марта 2009

Я хочу проверить мою форму extjs. Когда текстовое поле пусто, должно появиться окно с предупреждением, после чего наш курсор должен сфокусироваться на текстовом поле. Я попробовал с кодировкой ниже. Оповещение работает нормально. но курсор не фокусируется. Можете ли вы помочь мне сосредоточиться?

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

Ответы [ 3 ]

8 голосов
/ 26 марта 2009

В документации указано, что MessageBox является асинхронным:

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

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

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

6 голосов
/ 13 апреля 2009
if (Ext.get("first").dom.value == "") {
    Ext.MessageBox.alert("Status", "Enter your First Name!", function() {
        Ext.get("first").focus();
    });
}
1 голос
/ 02 июля 2009

Попробуйте это


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);
          }
     });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...