I have a panel
with some textfield
and fieldcontainer
like this:
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);
And I would like to add a condition for allowBlank
:
By default all allowBlank
are false
if there is a data => allowBlank
for date and hour is true
if there are a date and a hour => allowBlank
for data is true
How can I do this please ?
Sorry for my bad English.
Thank you
答案 0 :(得分:0)
你可以这样做: -
field.allowBlank = YOUR_DATA.allowBlank; // data => allowBlank
field.validateValue(field.getValue());
希望得到这个帮助。
答案 1 :(得分:0)
您可以使用ViewModel
。
如果您使用的是标准MVC(模型视图控制器),我将假设您已经知道如何使用controller
。
在controller
中,您设置数据的那一刻:
控制器代码段:
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}'
}
}
ViewModel
上设置的值将与View
上的值同步。答案 2 :(得分:0)
非常简单:
以config或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.)
},
答案 3 :(得分:0)
试试这个
var yourField = Ext.getCmp('comboBoxID');
if(your_condition == true){
Ext.apply(yourField,{allowBlank:true});
}else {
Ext.apply(yourField,{allowBlank:false});
}
答案 4 :(得分:0)
您可以使用以下功能。
function setAllowBlank(field, allowBlank) {
if (field.allowBlank != allowBlank) {
Ext.apply(field, allowBlank);
}
}
用法:
var field = Ext.getCmp('date');
setAllowBlank(field, true);