我有一个学校作业,包括检查一个值是否为整数。这是实际的作业说明:
我的代码如下:
function numCheck() {
var enteredChar = document.getElementById('numeric_field').value;
var pattern = new RegExp('/^\d+$/'); // numbers only match
if (pattern.test(enteredChar)) {
alert("All good!");
} else {
try {
throw new Error("Invalid numerical character(s) given!");
} catch (e) {
alert(e);
}
}
}
html如下:
<form>
Enter Numeric Value: <input type="text" id="numeric_field" onkeypress="numCheck()">
</form>
然而,无论我做什么,如果第一个字符不是数字,它可以正常工作,但当第二个字符是数字时,它也会显示此警告对话框。任何帮助,将不胜感激!如果每个字符只是数字,我想检查按下的每个键,如果不是,则显示警告对话框,但如果是,则显示包含“All good!”的警告对话框。我读到onkeyup和onkeydown更适合这个,但由于作业说使用onkeypress我有点不习惯使用它。
答案 0 :(得分:2)
通过使用正则表达式,你需要做的事情要困难得多。在这种情况下,它更简单(假设您只需要知道它是否是数字,而不是字母和数字的某种组合)来使用isNan
function numCheck() {
var enteredChar = document.getElementById('numeric_field').value;
if (!isNaN(enteredChar)) {
alert("All good!");
} else {
try {
throw new Error("Invalid numerical character(s) given!");
} catch (e) {
alert(e);
}
}
}
答案 1 :(得分:1)
isNaN
是一个很好的解决方案!
但是为了纠正您当前的代码,这是我的提示:
var pattern = new RegExp('^\\d+$');
是。onkeyup
代替,因为您使用onkeypress
获得旧值。