Ext的Field.isValid()函数

也许你也遇到过这种情况:先用markInvalid()函数把某个输入域标示为inValid状态,之后你调用这个输入域的isValid()函数,你期待它返回false,实际上确实true。
这是为什么呢?

官方的文档中对这个函数的描述是这样的:
[quote]Returns whether or not the field value is currently valid by validating the processed value of the field. Note: disabled fields are ignored.[/quote]
这个函数会调用已经定义的校验规则来验证输入框中的值,如果通过则返回true。而markInvalid()函数只是给输入框加上了invalid标志,并不影响校验结果,于是这种奇怪的现象就出现了。

当然,我们可以通过预设校验规则来做所有的验证,而不用markInvalid这个函数,这样可以避免发生这种情况。但是,如果你也像我一样,喜欢用markInvalid函数标示某个控件为invalid,并且期望之后调用isValid时返回false,那么,下面的这段代码就派上用场了。

Ext.override(Ext.form.Field, {
isValid : function(preventMark){
if(this.disabled){
return true;
}
if(this.getEl().hasClass(this.invalidClass)){
return false;
}
var restore = this.preventMark;
this.preventMark = preventMark === true;
var v = this.validateValue(this.processValue(this.getRawValue()));
this.preventMark = restore;
return v;
}
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值