EXT JS:如何在运行时强制MaxLength为false?

时间:2014-02-16 05:04:31

标签: javascript html5 extjs extjs4

我正在处理文本字段并使用 enforceMaxLength 配置限制最大长度。

所以,作为一个用例 - 我限制用户只输入14个字符。但是,一旦使用this.setRawValue(Ext.util.Format.currency(this.getValue()));

设置了值,我的文本字段会附加.00和一个美元符号

因此,在设置值之后,文本字段的总长度变为18,并且它始终给出最大长度违规错误消息。

有没有办法避免错误信息,但仍然限制用户只输入14个字符?我正在尝试清除maxLength文本,但我无法找到方法或解决方法。

任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以覆盖validator的{​​{1}}功能,并在应用格式时致电textfield

http://jsfiddle.net/FcXrL/1/

这是一个概念证明,您将需要更新正则表达式。

现在,如果你可以制作一个好的正则表达式并让它在一行中验证,你总是可以使用textfield.validate()。只需确保在设置货币时调用VType,因为使用util格式更改文本不会导致验证功能运行。

<强>更新

所以我搜索了高低不同的内置方式,但是这一点和我能得到的一样好。
我们要做的是抓住textfield.validate()上的keypress事件,并测试我们有多少个字符。如果我们超过阈值(在这种情况下为14),我们只需textfield,其中包含当前输入的子字符串。

http://jsfiddle.net/vYu4G/5/

在这个小提琴中,我将.setValue()分解为自己的变量,因此我可以轻松地执行textfield。如果您正在使用MVC,您只需在控制器中监听.on()事件。

另请注意,没有keypressenforceMaxLength配置,我添加了maxLength配置。