extjs形成markInvalid

时间:2011-03-03 08:43:38

标签: extjs

我想直接从表单中使用this.form.markInvalid。

我的表单中有2个项目:

代码:

  items: [
            { 
            fieldLabel: 'Name',
            name: 'name'
            }
            ,{
            id: 'e' ,
            fieldLabel: 'Email',
            name: 'email'
        }]

当用户点击我正在呼叫this.form.markInvalid({'e':'email is invalid'});

的按钮时

我想将电子邮件项标记为无效,并显示错误消息:“电子邮件无效”。

但是当我按下按钮时收到错误消息:

this.form is undefined
 this.form.markInvalid({'e':'email is invalid'}); 

THX

1 个答案:

答案 0 :(得分:1)

在按钮处理程序/侦听器中,您是否定义了正确的范围?

注册到click事件的函数应该可以访问this.form属性。在您的情况下,this可能指向按钮本身而不是formPanel。

您可以使用createDelegate()轻松更改侦听器的范围,或者在注册侦听器时添加额外的参数:

myButton.on('click', function(){
    console.log(this, this.id);
}, this); // <= notice the "this" argument here!

BUT! 你为什么这样验证你的电子邮件?您可以轻松地将vtype添加到您的字段配置中,让ExtJS为您完成所有操作。

items: [{ 
    fieldLabel: 'Name',
    name: 'name'
},{
    id: 'e' ,
    fieldLabel: 'Email',
    name: 'email',
    vtype: 'email'
}]