【发布时间】:2013-03-31 08:09:55
【问题描述】:
例如,如果我有一个表单并且我不希望用户在其中输入数字并且我使用包含正则表达式的函数对其进行验证,我如何防止用户输入的无效字符(在此示例中,一个数字)如果它没有通过正则表达式测试,它会不会出现在文本表单中?
这是我尝试过的功能和我尝试过的选择列表(换句话说,这不是整个程序)。我尝试将 false 返回到 onkeypress 事件处理程序,但用户在文本框中输入的内容仍然通过。
function noNumbers(answer) { //returns false and displays an alert if the answer contains numbers
if (/[\d]+/.test(answer)) { // if there are numbers
window.alert("You can not enter numbers in this field");
return false;
}
}
<form action="get" enctype="application/x-www-form-urlencoded">
<select id="questions" name="questions">
<option value="no_numbers">What is the name of the city where you were born?</option>
<option value="no_letters">What is your phone number?</option>
<option value="no_numbers">What is the name of your favorite pet?</option>
<option value="no_letters">What is your social security number?</option>
<option value="no_numbers">What is your mother's maiden name?</option>
</select>
<p><input type="text" name="answer" onkeypress="validateAnswer();" /></p>
</form>
【问题讨论】:
-
Err... 如您所说,通过在
keypress事件处理程序中返回false。你尝试了什么?我们想看看你尝试过的代码。 -
为什么要这样做?只需在发送数据之前对其进行验证,输入限制的烦人用户只是,嗯,烦人。
-
这是学校作业。这也是我第一次问这个问题时没有发布代码的原因。因为班上的人可以复制它并声称它是他们自己的。但是我想我必须在这里发布一些代码供人们查看问题所在。
-
您不是在检查被按下的键,而是在将新字符添加到输入字段后检查答案。到那时阻止它为时已晚。
-
如何检查被按下的键?据我了解,我需要做一些涉及 unicode 的事情。
标签: javascript forms validation onkeypress