我需要将我的ExtJs文本字段配置为仅接受正数,负数,整数和小数,最多2位小数。我尝试使用maskeRe
和正则表达式/^-?[0-9]\d*(\.\d+)?$/
。但它只接受正整数。用户不应该键入受限制的字符。它也应该接受' - '只在第一个地方和'。'介于两者之间,只有一次。
所以它应该接受: 10, -10, 10.12, -10.34等
由于
答案 0 :(得分:5)
将maskRe
更改为
maskRe: /[0-9.-]/,
validator: function(v) {
return /^-?[0-9]*(\.[0-9]{1,2})?$/.test(v)? true : 'Only positive/negative float (x.yy)/int formats allowed!';
},
关键是你允许使用maskRe
(而不是值本身)的一些字符并验证validator
中的字符串输入。
模式详情:
^
- 字符串开头-?
- 一个可选的连字符[0-9]*
- 零个或多个数字(\.[0-9]{1,2})?
- 可选序列
\.
- 一个点[0-9]{1,2}
- 任意1或2位数字$
- 字符串结束。答案 1 :(得分:1)
你可以使用这个属性xtype:'numberfield',它会接受所有类型的数字。对于十进制值,我们可以使用decimalPrecision:2。
试试吧,如果代码无效,请提供您的代码。所以我可以建议你最好的解决方案。
一切顺利:)
答案 2 :(得分:1)
他离开了这样做的方式,以防万一有人这样做可以为他们服务
仅字母:
<ext:TextField ID="tfname" FieldLabel="Name" MaskRe="([a-zA-Z])" runat="server" >
</ext:TextField>
仅数字:
<ext:TextField ID="tfnumber" FieldLabel="Number" MaskRe="([0-9])" runat="server" >
</ext:TextField>
接受之前的所有内容:
<ext:TextField ID="tfname" FieldLabel="Name" MaskRe="([a-zA-Z0-9])" runat="server" >
</ext:TextField>