我有一份学校作业,其中包括检查一个值是否为整数。这是实际的作业笔记:
- 编写 JavaScript™ 代码来预测和处理预期数字字段的错误。这段代码在按键时执行,输入的值保存在一个名为 enteredChar 的变量中。包含 JavaScript™ 语句的 try block ,用于检查字符是否不是数字或非字母数字字符,或者是否抛出错误消息。
我的代码如下:
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>
然而,无论我做什么,如果第一个字符不是数字,它都能正常工作,但当第二个字符是数字时,它也会显示此警告对话框。任何帮助,将不胜感激!如果每个字符只是数字,我想检查按下的每个键,如果不是,则显示警报对话框,但如果是,则显示包含“一切都好!”的警报对话框。我读到 onkeyup 和 onkeydown 更适合这个,但由于作业说使用 onkeypress 我有点坚持使用它。
最佳答案
使用正则表达式会使这变得更加困难。在这种情况下,使用 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);
}
}
}
关于JavaScript 检查错误地允许输入字段中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20622178/