【问题标题】:Extjs4.1 - Submit Valid form within hidden field has allowblank falseExtjs4.1 - 在隐藏字段中提交有效表单允许空白为假
【发布时间】:2013-08-22 03:19:05
【问题描述】:

我有一个包含动态项目的表单面板。有些项目已经隐藏,例如:

        items: [{
            xtype: 'textfield',
            fieldLabel: 'Field 1',
            name: 'theField'
        },{
            xtype: 'textfield',
            fieldLabel: 'Field 2',
            name: 'theField'
        },{
            xtype: 'textfield',
            fieldLabel: 'Field 3',
            name: 'theField',
            hidden: true,
            allowBlank : false
        }]

但是当我提交我的表单时

            if (form.isValid()) {
                alert('submit');
            }else alert('fail');

这将检查所有字段,并且我的表单将不会提交。
反正有有效的形式(只显示字段)?怎么做谢谢

这是我检查的示例http://jsfiddle.net/jZYcQ/

【问题讨论】:

    标签: extjs extjs4.1


    【解决方案1】:

    正如您所说,隐藏字段仍将被验证。相反,您应该禁用该字段,这意味着它不会被提交,也不会被包含在验证中。

    【讨论】:

    • 确实,我设置了隐藏和禁用,它就像一个魅力!多谢兄弟! :-)
    【解决方案2】:

    验证隐藏字段。要禁用或跳过对隐藏字段的验证,您可以将“skipValidation”设置为 true。此外,如果也设置了 'allowBlank',请将其设置为 true。

    因此,通常当定义了一个字段并且您在其上添加了验证时,将 skipValidation 设置为 true 将禁用该字段的表单提交验证。但是,它不会禁用 allowBlank 验证。您仍然无法在提交时将字段设置为空。因此,如果您的字段除了需要该字段之外还有其他验证,则您将需要两者。显示字段时重置它们..

    //View
    xtype:'textfield',
    allowBlank:false,
    validator: function(){
      //custom validation 
    }
    ...
    
    //Controller
    function(){
    ...
       form.down("#field").skipValidation = true;
       form.down("field").allowBlank = true;
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2016-05-16
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      相关资源
      最近更新 更多