1
在我的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,但字段被标记为无效。
我现在的问题是,我怎么能实现这样的形式也被设置为无效的上面的代码?
非常感谢您的帮助!
formBind在版本4.0.2a中无法正常工作。尝试[这个warkaround](http://stackoverflow.com/questions/6795511/extjs-simple-form-ignores-formbind/6798704#6798704)。 – 2012-02-15 14:08:18
我认为问题不是formBind配置。在解决方法中,他们使用vtypes,但我不使用它。当我点击保存按钮时,函数'isValid()'总是返回'true'。我认为这与formBind方法无关。 – shub 2012-02-15 14:19:40
Form.isValid始终可以返回true,因为它可能在'form._boundItems'中缓存了错误的字段。所以它可能与我发布的链接中的问题相同。 – 2012-02-15 14:26:41