我正在为货币输入验证编写一些JS,并希望阻止用户在输入中输入任何超出一组规则的字符。代码没有像我想象的那样工作,并且会喜欢关于如何处理的另一种意见。
例如 - 我目前专注于输入文本框并在同一个文本框中键入字符,如果我要输入减号,句号或数字之外的任何内容,因为用户键入输入框什么都不会出现。
示例法律输入(尝试输入):
我正在使用此代码:
element.on('keypress', function(event) {
var pattern = /^([-]?[\d]*[.]{1}[\d]{1,2})$/;
var charCode = event.which | event.keyCode;
var charStr = String.fromCharCode(charCode);
if (!pattern.test(charStr)) {
event.preventDefault();
}
});
其中pattern
是我正在使用的RegEx表达式,应该涵盖这些规则。不幸的是,尽管它成功地阻止了字符的类型,但频率不是这种情况(例如,如果我键入'---',这是合法输入,我的规则只需要允许第一个' - '并且连续尝试被阻止)
有什么想法吗?