ExtJs作为曾经轰动一时的Js框架,由于它的笨重导致流失了很多用户,但是目前一些旧的系统可能还在用这种技术。为了能记录一些问题的解决方案,特此写了这篇文章。
下面的例子,解决了复选框(checkbox)的change事件触发,之后据此把其他的属性(field)设置为必填或者非必填。但是,在页面首次加载后change事件并不会触发,这时候通过afterrender(渲染后)事件来解决了这个问题。但是,遗留的问题是前面的label样式没有跟着改变。 [codesyntax lang="javascript"]
{
fieldLabel : "需要认证",
xtype : 'checkbox',
validateOnChange : false,
dataIndex : "auth",
listeners : {
change : function(data){
var checked = data['checked'];
checked = !checked;
var loginNameField = Ext.getCmp('loginName_field_id');
var passwordField = Ext.getCmp('password_field_id');
loginNameField.allowBlank = checked;
passwordField.allowBlank = checked;
},
afterrender : function(obj){
var checked = obj['checked'];
checked = !checked;
var loginNameField = Ext.getCmp('loginName_field_id');
var passwordField = Ext.getCmp('password_field_id');
loginNameField.allowBlank = checked;
passwordField.allowBlank = checked;
}
}
}
[/codesyntax]