在输入字段中使用 type="number"
时,正则表达式验证似乎不起作用。
<input type="number" step="any" min="0" max="24" value="0">
使用 step, min, max
进行的基于broswer的新验证按预期工作。然而,这在浏览器中并不一致吗?
问题
如何使用正则表达式对数字字段进行验证?
如果有人有信息,我也会对区分数字和文本字段的其他因素感兴趣。
备注
我发现检查空字符串会导致验证触发 IF 不符合数字字段的条件。
答案 0 :(得分:1)
RegEx不起作用,因为返回的值是数字,而不是字符串。它按预期工作&#39;当您将返回的值强制为字符串格式时:
var valid = /^\d*\.?\d*$/.test(String(value));
您可能需要阅读How to get the raw value an <input type="number"> field?,因为它表示您不 来验证type=number
输入。
答案 1 :(得分:1)
数字字段执行自己的验证,如果它包含非数字字符,则会自动删除该值,直到给出正确的值。您可以使用console.log(value)
来查看此内容。
所以你也可以检查一个空字符串
function check(value, msg) {
var valid = ((value != '') && /^\d*\.?\d*$/.test(value));
if (valid) {
document.getElementById(msg).style.display = "none";
} else {
document.getElementById(msg).style.display= "inline";
}
return valid;
}
答案 2 :(得分:0)
添加此代码并在输入中添加ID。
$(document).ready(function() {
$("#txtboxToFilter").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});