ExtJS 阻止验证表单字段的显示:无

Posted

技术标签:

【中文标题】ExtJS 阻止验证表单字段的显示:无【英文标题】:ExtJS Prevent validation for form fields with display: none 【发布时间】:2016-06-23 05:08:09 【问题描述】:

我想阻止对带有display: none 的表单字段进行验证。

例如ipv6 设置为display: none 的字段,我不想用isValid() 方法检查这些字段。

var form = new Ext.form.FormPanel(
  frame: true,
  bodyStyle: 'padding:5px 5px 0;',
  items: [
    xtype: 'radiogroup',
    id: 'ip_type',
    fieldLabel: 'IPType',
    columns: 2,
    items: [
      boxLabel: 'IPv4',
      name: 'ip_type',
      inputValue: 'ipv4',
      checked: true
    , 
      boxLabel: 'IPv6',
      name: 'ip_type',
      inputValue: 'ipv6'
    ],
    listeners: 
      'change': function(radioGroup, checkedRadio) 
        if (checkedRadio.inputValue == 'ipv4') 
          Ext.fly('ip').setStyle(
            display: 'block'
          );
          Ext.fly('ipv6').setStyle(
            display: 'none'
          );
          Ext.getCmp('ip').enable();
          Ext.getCmp('ipv6').disable();
         else 
          Ext.fly('ip').setStyle(
            display: 'none'
          );
          Ext.fly('ipv6').setStyle(
            display: 'block'
          )
          Ext.getCmp('ip').disable();
          Ext.getCmp('ipv6').enable();
        
      
    
  , 
    id: 'ip',
    layout: 'column',
    border: false,
    hideBorders: true,
    items: [
      layout: 'form',
      items: [
        fieldLabel: 'IP',
        xtype: 'ipv4field',
        name: 'ip',
        allowBlank: false,
        regex: ipv4_reg,
      ]
    , 
      html: '/'
    , 
      xtype: 'numberfield',
      name: 'netmask',
      allowBlank: false,
      allowDecimals: false,
      minValue: 0,
      maxValue: 32,
      width: 70
    ]
  , 
    id: 'ipv6',
    layout: 'column',
    border: false,
    hideBorders: true,
    items: [
      layout: 'form',
      items: [
        fieldLabel: 'IP',
        xtype: 'textfield',
        name: 'ipv6',
        allowBlank: false,
        regex: ipv6_reg,
      ]
    , 
      html: '/'
    , 
      xtype: 'numberfield',
      name: 'netmaskipv6',
      //allowBlank: false,
      allowDecimals: false,
      minValue: 0,
      maxValue: 128,
      width: 70
    ]
  ]

);

【问题讨论】:

你能添加一些代码吗? 【参考方案1】:

为避免验证无线电,您可以使用Ext.form.Radio.disabled,或者如果您想在表单提交期间发送字段值,您可以将Ext.form.Radio.validationEvent 设置为false

最好使用 ExtJS Ext.form.Radio.hidden 属性而不是 css display

【讨论】:

谢谢你的回答,关键问题是我有很多隐藏的表单元素,我不希望它们被检测到,无法设置为禁用,我希望我的display: 待检测的块元素

以上是关于ExtJS 阻止验证表单字段的显示:无的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4.2.1 - 表单自定义字段验证

在extjs中显示服务器端验证错误

ExtJs:无法在表单中显示字段

当输入字段显示从无更改为阻止时,jQuery 验证停止

extjs 删除/读取文本字段以形成错误?

如何防止所有表单字段在填写单个字段时进行验证