ExtJS的:文本字段allowblank与条件
问题描述:
我有一些textField
和fieldcontainer
这样的面板:ExtJS的:文本字段allowblank与条件
Ext.apply(this, {
items: [{
padding: '0 10 5 10',
xtype: 'textfield',
name: 'data',
id:'data',
alType: 'data',
labelWidth: 130,
fieldLabel: i18n.get('label.data'),
allowBlank: false,
enforceMaxLength: true,
maxLength: 8,
minLength: 1,
allowDecimals : false,
allowExponential : false,
invalidText: i18n.get('error.bad.data'),
maskRe: /[0-9]/
}, {
xtype: 'fieldcontainer',
layout: 'hbox',
defaultType: 'textfield',
items: [{
padding: '0 10 5 10',
width:285,
xtype: 'datefield',
name: 'date',
id:'date',
alType: 'date',
format : 'd/m/Y',
labelWidth: 130,
fieldLabel: i18n.get('label.date'),
allowBlank: false,
},{
xtype: 'timefield',
padding: '0 10 5 15',
width:230,
name: 'hour',
id:'hour',
labelWidth: 80,
fieldLabel: i18n.get('label.hour'),
minValue: '00:00',
maxValue: '23:00',
format: 'H:i',
increment: 60,
anchor: '100%',
allowBlank: false,
}]
}]
});
this.callParent(arguments);
而且我想补充的“allowBlank
”的条件:
- 默认情况下所有allowBlank是false
- 如果有日期和小时data => allowBlank
是true
如果有日期和hour => allowBlank
的数据是true
我该怎么做?
对不起,我的英语不好。
谢谢
答
你可以像下面: -
field.allowBlank = YOUR_DATA.allowBlank; // data => allowBlank
field.validateValue(field.getValue());
希望这有助于。
答
您可以通过使用ViewModel来实现此目的。
如果您使用的是标准MVC(模型视图控制器),我会假定您已经知道如何使用控制器。
在你的控制器,你设置你的数据时刻:
控制器代码片段:
me.getViewModel().set('isThereData', data)
me.getViewModel().set('isThereDate', dateAndHour)
- 注:这是没有必要启动对你的ViewModel这个变量。
在您查看代码片段:
xtype : 'textfield',
fieldLabel : 'data',
bind : {
allowBlank : '{isThereDate}'
}
xtype : 'textfield',
fieldLabel : 'Date and Hour',
bind : {
allowBlank : '{isThereData}'
}
- 直通结合,你对你的视图模型设置的值将与您查看的值同步。如果它不是空
- ExtJS的自动翻译 '{isThereData}' 真
答
它很简单:
获得配置或init()方法的数据:
allowBlank:(data.rec.hour)?'true':'false';
这一定会奏效。 如果你想使用它的样改变听众或再集中,
onChangeCheckbox:function(cmp, newValue, oldvalue){ //it is recomended to use allowBlank in listners instead.
var me=this,
form=cmp.up('form'),
field=form.down('#foldername'),
field.allowBlank=!newValue;
//(please set condition accordingly Above.)
},
答
试试这个
var yourField = Ext.getCmp('comboBoxID');
if(your_condition == true){
Ext.apply(yourField,{allowBlank:true});
}else {
Ext.apply(yourField,{allowBlank:false});
}
答
您可以使用函数像下面。
function setAllowBlank(field, allowBlank) {
if (field.allowBlank != allowBlank) {
Ext.apply(field, allowBlank);
}
}
用法:
var field = Ext.getCmp('date');
setAllowBlank(field, true);
给一些捣鼓代码 – Tejas
对不起,我不知道为什么,但“你好”丢失.. – Bartac
你应该写一个定制的验证。 –