我想直接从表单中使用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
答案 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'
}]