我有一个带有两个输入字段“ test1”和“ test2”以及一个组合框的表单。我想验证此表单,输入字段不应为空。因此,我使用配置'allowBlank:false'和控制器方法'onFormValidityChanged'。效果很好。
现在,当我使用控制器方法“ onChangeCombo”动态更改组合框中的值时,我将隐藏输入字段“ test2”。另外,我设置了输入字段'test2'的config'allowBlank:true'。但是当隐藏的输入字段“ 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;
}
答案 0 :(得分:1)
要关闭验证,只需禁用此隐藏的输入即可。
test2.disable();
我也对您有建议:
使用test2.setAllowBlank(true)代替test2.allowBlank = true
不要使用诸如win.down(etc。)之类的引用,而是使用引用和查找方法检出ViewController选项
答案 1 :(得分:0)
诺贝克的提议
test2.disable()
不提供解决方案。我不知道为什么...
我没有遵循dh117的formBind建议。 我如下解决了这个问题:
test2 = win('textfield[itemId=test2]');
win.remove(test2);
感谢您的提示,也感谢其他提示, 托马斯