javascript - ExtJS 4.2 中欧洲货币输入的正则表达式

标签 javascript regex extjs extjs4.2

我有一个文本字段,用户可以在其中输入价格值。我必须将输入作为 0,00(没有小数点,只有一个逗号表示美分值)。 所以用户可以输入以下内容

  • 123
  • 123,(我会在模糊事件中删除这个逗号)
  • 123,1
  • 123,11

所以我写了这个 RegExp:^\d+(,\d{0,2})?$ 并在 regexpal.com 上测试了它对于上述测试用例,它验证了所有这些。

现在当我在我的代码中使用它时

xtype:'textfield',
fieldLabel: 'Tiefbau(informativ)',
maskRe: /^\d+(,\d{0,2})?$/

并尝试输入值 123,12,它不允许我输入逗号,因为我发现 Textfield 将每个单独的字符与“maskRe”表达式进行比较。

我想要“一个或没有逗号”“没有小数点” 谁能告诉我解决方案或指出我的错误?

最佳答案

为什么不使用派生自textfieldnumberfield组件呢? 它是一个专门的数字输入字段,只允许输入数字输入。

当您查看 documentation 时你会发现它用逗号而不是点解决了你的问题 decimalSeparator 配置。

使用 minValuedecimalPrecision 配置,您应该有一个适合您需要的输入字段。

{
    xtype: 'numberfield',
    fieldLabel: 'Tiefbau(informativ)',

    decimalSeparator: ',',   // use comma instead of dot
    minValue: 0,             // prevents negative numbers
    decimalPrecision: 2,     // maximum precision to display after the decimal separator
    allowExponential: false, // disallow exponential values ([e+-] chars not typable)

    // Remove spinner buttons, and arrow key and mouse wheel listeners
    hideTrigger: true,
    keyNavEnabled: false,
    mouseWheelEnabled: false
}

参见 fiddle .

关于javascript - ExtJS 4.2 中欧洲货币输入的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615661/

相关文章:

javascript - 单击按钮后如何从iframe启动音频流

javascript - 动态改变传单中多边形的颜色?

java - Android - 如何使用正则表达式检测纯文本中的网址?

python - 在研究和替换中使用名称组

javascript - 使用 jQuery 消费 JSON

javascript 电子邮件正则表达式问题

javascript - TabPanel 选项卡上的 itemId 被框架设置为 "deleted"?

javascript - ExtJS 4.1 中发送参数

extjs - 如何将 z-index 设置为 Ext.Panel (ExtJS)?

javascript - 如何为html类添加事件监听器?