如何验证一个依赖于另一个字段的字段?
{
xtype: 'textfield',
name: 'name2',
vtype: 'type', // how to write the validation code for this if it
// depends on the value of another field?
allowBlank: false
}
6条答案
按热度按时间mmvthczy1#
通过添加您自己的自定义验证器,并在其中执行验证。
tquggr8v2#
字段定义:
initComponent中的next(或侦听器,如果您愿意):
并在FormPanel中定义处理程序:
“如果值通过验证,markInvalid()方法不会导致Field的validate方法返回false。因此,只将Field标记为无效不会阻止提交使用Ext.form.Action.Submit.clientValidation选项集提交的表单。”
因此,allowBlank和setValue(null)组合将破坏验证
hc8w905p3#
我用Ext JS 5.1中的combobox模拟了一个例子…它很容易移植到Ext 4代码中,您只需使用
initComponent
而不是ViewController的e1d1e。这是代码(和提琴):tp5buhyn4#
为了验证链接字段,我通常创建一个函数(我将其添加到
Ext.lib.Validators
类中,以便在整个应用程序中调用它),该函数返回一个具有预配置范围和验证逻辑的匿名函数(以便在应用程序中多次使用它)。下面是一个示例:
这里有一个时间间隔选择的例子。
vshtjzan5#
一般来说,我建议在需要交叉验证的所有字段上连接更改事件侦听器。在变更事件处理程序中,我们需要在需要验证的其他字段上触发验证,以修改该字段。当您有一个表单,并且有很多字段,需要进行很多验证时,这种方法非常有效。
hgqdbh6s6#