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 的一些用户反馈后运行,您必须使用回调函数(有关详细信息,请参阅函数参数)。

因此,您的 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 回答