0

我需要限制输入,以便用户只能输入美元金额。这意味着他们可以输入一串数字,可选地后跟一个小数和 0-2 个数字。没有逗号,没有美元符号。

我发现我认为这是一个很好的模式,但我也希望允许用户使用退格、回车、制表符等。我希望有一种更好的方法来做到这一点,而不是在我的白名单上明确列出每个有效的键码。我希望这/\W/能解决问题,但可惜,它匹配了太多的按键。

这是我目前拥有的。

  $input.keypress(function(evt) {
    var ch = String.fromCharCode(evt.which);
    var val = evt.target.value + ch;
    var pattern = /^\d+(\.?(\d{1,2})?)$/;
    if (!pattern.test(val)) {
      evt.preventDefault();
    }
  });

如果有一种智能且简洁的方式允许用户进行更正并使用键盘导航表单,我会很高兴听到它。

如果您有改进上述正则表达式的建议,请随时将其包含在您的答案中(或者如果您没有答案,请将其留在评论中)。

谢谢!

4

1 回答 1

1

当我在我的代码中执行此操作时,我不会在按键本身上运行正则表达式,而是在他们正在输入的字段的内容上运行。这样您就不必担心非打印字符。您将需要担心它们会剪切并粘贴到不会触发该按键事件的字段中。

于 2012-07-02T18:57:56.973 回答