我创建了一个表单,现在我想在其中添加一个输入字段,它只接受一个特定的数字,即数字'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,'');
});
答案 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');
});