输入字段仅接受特定数字

时间:2013-10-01 19:57:57

标签: javascript html forms validation input

我创建了一个表单,现在我想在其中添加一个输入字段,它只接受一个特定的数字,即数字'4'。这更像是垃圾邮件检查,用户被问到“1 + 3的答案是什么?”然后他/她将在输入字段中输入数字'4',以便处理表单。这也可以这样工作:如果在输入字段中输入任何其他数字并且提交表单,则会弹出一个弹出窗口来解释错误。

我创建的jsfiddle只接受数字4,但遗憾的是它允许接受“完全停止”。

HTML:

<input id="humancheck" type="text" maxlength="1" name="humancheck" required />

使用Javascript:

jQuery('#humancheck').keyup(function () { 
    this.value = this.value.replace(/[^4-4\.]/g,'');
});

2 个答案:

答案 0 :(得分:2)

你的正则表达式应该只替换[^4](任何不是4的字符)。我不确定你为什么还包括-4(范围)和\.('。'字符)。

请注意,确保密钥保护并没有多大帮助。任何人都可以启动webkit检查器并手动放置3。如果这只是一个有趣的实验,那也很酷:)

答案 1 :(得分:0)

我知道这个帖子有点发霉,所以我想我可能会把它带一点。

首先,您不应该将'keyup'用于事件触发器,因为它是处理器密集型的。想象一下,如果你想要匹配一个以上数字的数字,你可以看到'keyup'如何成为问题。

使用'blur'事件是一个更好的触发器,因为它在用户完成后检查数字值 在表单字段中输入数字。

如果我理解OP,那么为什么简单地使用正则表达式呢? 比赛?相反,这是我编写函数的一种方式(对于jQuery 1.11.0+)。它还进行了额外的检查,以确保输入确实是一个数字。

$('#humancheck').blur( function(){ 
  if (isNaN(this.value)) alert('Not a Number');
  if (this.value != 4) alert('Incorrect Number');
});