我希望阻止使用任何其他格式,而不是在字段中正式更正百分比,而即使执行击键也不会显示任何其他输入。
现在我有以下代码,不允许我实现我的结果:
$("input").keypress(function (e) {
var regex = /\d{1,4}\.?\d{0,3}/g;
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test(key)) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
});
虽然有许多选项可以验证事后,例如使用按钮,我真的希望在用户输入时即时使用它。但是,这个表达式甚至不允许我在第一个数字后插入一个小数点。
答案 0 :(得分:2)
不是JS开发人员(欢迎提出意见!),但现在您正在针对单个密钥测试正则表达式,因此只允许使用数字密钥。
假设您只想允许1-4位数字,可能后跟.
和最多三位数字,您可以使用正则表达式:
/^\d{1,4}(?:\.\d{0,3})?$/
(?:...)
是非捕获组,^$
是匹配字符串开头和结尾的锚点。请注意,此表单还允许结束.
(例如1234.
)。
在JS代码中,这给出了(参见fiddle here):
var regex = /^\d{1,4}(?:\.\d{0,3})?$/;
$("input").keypress(function (e) {
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test($("input").val() + key)) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
});