0

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

我创建了一个只接受数字 4 的jsfiddle,但遗憾的是它允许接受“句号”。

HTML:

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

Javascript:

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

2 回答 2

2

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

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

于 2013-10-01T20:01:36.397 回答
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');
});
于 2015-02-28T14:44:30.623 回答