2014-02-16 35 views
1

我正在處理textfields並使用enforceMaxLength配置限制最大長度。EXT JS:如何在運行時將MaxLength強制爲false?

因此,作爲一個用例 - 我限制用戶只能輸入14個字符。但我的文本框的追加.00和一個美元符號一旦值使用set this.setRawValue(Ext.util.Format.currency(this.getValue()));

因此,該值設置後,文本字段的總長度變爲18,它總是給人最大長度衝突錯誤消息。

有什麼辦法可以避免錯誤信息,但仍然限制用戶只輸入14個字符?我正在嘗試清除maxLength文本,但我無法找到一種方法或工作來執行此操作。

任何指針都會有幫助。

+0

jsfiddle上的所有代碼對我們都有幫助。 –

回答

1

當您應用格式時,您可以覆蓋textfieldvalidator函數並調用textfield.validate()

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

這是一個概念證明,你將要更新的正則表達式。

現在,如果你能做出一個好的正則表達式,並得到它在一行中驗證,你總是可以使用VType。只要確保在設置貨幣時致電textfield.validate(),因爲使用格式util更改文本不會導致驗證功能運行。

UPDATE

所以我搜索高和低這樣做的內置的方式,但是這是一樣好,我可以得到它。
我們要做的就是抓住textfield上的keypress事件,並測試我們有多少個字符。如果我們超過閾值(在這種情況下爲14),我們只需要.setValue()以及當前輸入的子字符串。

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

在這個小提琴,我打破了textfield伸到其自己的變量,所以我可以輕鬆地做了.on()。如果您使用的是MVC,則可以在控制器中監聽keypress事件。

另外請注意,沒有enforceMaxLengthmaxLength配置,並且我添加了enableKeyEvents配置。

+0

你好Lmmo。謝謝你的幫助。很抱歉混淆,但我的問題是關於'如何清除MaxLength文本屬性?'我想要的是'文本字段應該停止用戶輸入x'字符,但如果驗證失敗則不會觸發任何消息。謝謝。 – Gendaful

相關問題