Extjs4.1 - 在隐藏字段中提交有效表单允许空白为假

Posted

技术标签:

【中文标题】Extjs4.1 - 在隐藏字段中提交有效表单允许空白为假【英文标题】:Extjs4.1 - Submit Valid form within hidden field has allowblank false 【发布时间】: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/

【问题讨论】:

【参考方案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;
...

【讨论】:

以上是关于Extjs4.1 - 在隐藏字段中提交有效表单允许空白为假的主要内容,如果未能解决你的问题,请参考以下文章

在提交 IFRAME 表单之前,将父 url 保存到隐藏字段

Django 表单:提交表单时出现隐藏字段错误

如何在params值中访问表单中的隐藏字段,但它表示行末尾

如何在下拉列表中获取除隐藏和提交按钮之外的所有表单字段

提交时的表单验证 - angularjs 1.5 - 当字段 $pristine 时 $invalid

如何使用 jQuery 重新填充表单提交时隐藏的 CSV 字段