我的表单具有两个输入字段'test1'和'test2'和一个组合框。我想验证此表格,输入字段不应是emtpy。因此,我使用config" allowblank:false"和控制器方法" onformvalityChanged"。这很好。
现在,当我使用控制器方法中的组合框中更改" test2"的输入字段'test2',动态地'Onchangecombo'。另外,我设置了config'允许布莱克:true的输入字段'test2'。但是当隐藏的输入字段" test2"为空时,我的表格无效。
如何从有效检查中排除隐藏的输入字段?
我使用Extjs版本6.6。
谢谢您的提示,托马斯
查看:
items : [{
xtype : ' formpanel',
trackResetOnLoad : true,
layout : {
type : 'vbox',
align : 'stretch'
},
items : [
{
xtype : ' textfield',
name : 'test1'
itemId : 'test1',
allowBlank : false,
fieldLabel : 'test1'
},
{
xtype : ' combobox',
name : 'combo',
itemId : 'combo',
store: myStore,
listeners : {
change : 'onChangeCombo'
}
},
{
xtype : ' textfield',
name : 'test2'
itemId : 'test2',
allowBlank : false,
fieldLabel : 'test2'
}],
listeners : {
validitychange : 'onFormValidityChanged'
}
}];
控制器:
onFormValidityChanged : function(form, valid) {
var win, button;
win = form.owner.up('window');
button = win.down('[xtype=button]');
button.setDisabled(!valid);
},
onChangeCombo : function(combobox) {
var win, test2;
win = combobox.up('window');
test2 = win.down('textfield[itemId=test2]');
test2.hide();
test2.allowBlank = true;
}
要关闭验证,只需禁用此隐藏的输入。
test2.disable();
我也有建议:
-
使用test2.setallowblank(true)代替test2.allowblank = true
-
不要使用诸如win.down(等)之类的参考,请查看带有参考和查找方法的ViewController选项
诺贝克的提案
test2.disable()
不提供解决方案。我不知道为什么...
我没有遵循DH117的形式建议。我解决了此问题如下:
test2 = win('textfield[itemId=test2]');
win.remove(test2);
感谢您的提示,也提示了进一步的提示,托马斯