如何使用maskRe限制ExtJs Textfield仅接受数字。 (应接受正数,负数,整数和十进制数。)

问题描述 投票:2回答:3

我需要配置我的ExtJs文本字段只接受可以是正数,负数,整数和最多2位小数的小数。我尝试使用maskeRe和正则表达式/^-?[0-9]\d*(\.\d+)?$/。但它只接受正整数。用户不应该键入受限制的字符。它也应该只在第一个地方接受' - '和'。'介于两者之间,只有一次。

所以它应该接受:10,-10,10.12,-10.34等

Link to my fiddle

谢谢

javascript regex validation extjs textfield
3个回答
6
投票

将你的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
投票

你可以使用这个属性xtype:'numberfield',它会接受所有类型的数字。对于十进制值,我们可以使用decimalPrecision: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>
© www.soinside.com 2019 - 2024. All rights reserved.