ExtJs表单验证

fas*_*ava 5 javascript validation extjs

我在ExtJs中有这个表单.如果field1不为空,则field2不能为空.但即使听众正在解雇,它也无法正常工作.

 {
    xtype: 'panel',
    title: 'title 1',
    items: [{
        xtype: 'fieldset',
        title: 'field A',
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Line 1',
            id: 'field1',
            listeners: {
                change: function(f, new_val) {
                    if (new_val) {
                        //alert("change" + new_val);
                        f.field2.allowBlank = false;
                    } else {
                        f.field1.allowBlank = true;
                    }
                }
            }
            code for field2
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

tim*_*dev 5

部分答案:

您的代码不起作用的原因是因为allowBlank是一个配置值 - 它只在创建组件时有效.我一直看到这个错误 - 在浏览API文档时,您需要记住所有这些配置选项仅在创建对象时有效 - 它们不是可以设置为修改现有对象行为的公共属性.

也就是说,我很惊讶API中没有setAllowBlank()方法.如果我能找到办法,我会继续环顾四周并修改这个答案.

编辑:从我阅读TextField源代码看,你的方法应该可行.所以问题是为什么不是.

编辑2:您可能无法获得对TextFields的引用.f.field1可能没有指出你的想法.您可以通过ref:'field1'在TextField配置中添加一个来解决此问题.然后你的FormPanel将有一个名为field1的属性,你可以参考.