JavaScript 检查错误地允许输入字段中的数字

标签 javascript

我有一份学校作业,其中包括检查一个值是否为整数。这是实际的作业笔记:

  1. 编写 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/

相关文章:

javascript - REST API,从 PHP 返回 JSON 对象到 JS 文件

javascript - 如何使用 jQuery 在克隆表行后动态更新 ID?

javascript - 'this'在javascript函数中意味着什么?

javascript - "cycle"在 CSS 和 onmouseover、onmouseout 类上的 Rails 问题

javascript - 如何让 `nuxt generate`生成的html完全静态化?

javascript - 将模型传递给自定义 Angular Directive(指令)进行验证

Javascript - 幻灯片放映上的下一个/上一个按钮 - 新 child 需要帮助

javascript - Bootstrap Modal 不会关闭,之前使用 JQuery 附加到 Body

javascript - Canvas 图像数据操作

Javascript - 防止 Chrome 在长循环期间终止页面