在FormPanel中的我的字段中,我添加了监听器blur
。如果发生此事件,我执行表单验证,如下所示:
listeners:{
scope: this,
blur: function(field, value){
var username = field;
if (username.getValue() == '') {
username.markInvalid('This field is required');
} else {
Ext.Ajax.request({
url: 'users/validateForm',
method: 'POST',
params: 'username=' + username.getValue(),
success: function(response, opts) {
var jsonData = Ext.decode(response.responseText);
if (jsonData.msg.username != '') {
username.markInvalid(jsonData.msg.username);
}
}
});
}
}
}
buttons: [{
text: 'Save',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
alert('test');
}
},
formBind:true
},{
text: 'Cancel'
}]
正如Ext JS的文档解释的那样,markInvalid()函数只影响字段本身。但我还想将表单设置为无效,以便在表单无效时禁用提交按钮。目前,表单上的函数isValid()始终返回true,尽管字段被标记为无效。
我现在的问题是,如何通过上面的代码将表单设置为无效?
非常感谢你的帮助!
答案 0 :(得分:1)
您应该能够使用表单中提供的hasInvalidField()
方法。例如:
var form = this.up('form').getForm();
if (form.hasInvalidField()) {
alert('test');
}
来自文档:
如果表单包含任何无效字段,则返回true。