如何防止将无效字符输入到表单中?
How do I prevent invalid characters from being entered into a form?
例如,如果我有一个表单,我不希望用户在其中输入数字,我用包含正则表达式的函数验证它,如果用户输入的无效字符(在本例中为数字)未能通过正则表达式测试,我如何防止它出现在文本表单中?
这是我尝试的函数和我尝试的选择列表(换句话说,这不是整个程序)。我尝试返回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="answerswer" onkeypress="validateAnswer();" /></p>
</form>
当您在相关字段中输入无效字符时,此验证对于动态地剥离无效字符非常有效。例子:
<form id="form1" name="form1" method="post">
Email:
<input type="text" name="email" id="email" onkeyup='res(this, emailaddr);' ; </form>
<script>
var phone = "()-+ 0123456789";
var numb = "0123456789";
var alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ @-'.,";
var alphanumb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ @-.'1234567890!?,:;£$%&*()";
var alphaname = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ,-.1234567890";
var emailaddr = "0123456789@._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
function res(t, v) {
var w = "";
for (i = 0; i < t.value.length; i++) {
x = t.value.charAt(i);
if (v.indexOf(x, 0) != -1)
w += x;
}
t.value = w;
}
</script>
然后您只需将javascript调用的第二个值更改为使用代码中定义的变量在字段中输入的数据类型。
这是您要查找的函数
function validateAnswer(src) {
var questions = document.getElementById("questions");
var rule = questions.options[questions.selectedIndex].value;
if(rule=="no_numbers") src.value = src.value.replace(/'d/g, '');
if(rule=="no_letters") src.value = src.value.replace(/'w/g, '');
}
将输入字段引用发送给函数,并将其设置为onkeyup
事件:
<input type="text" name="answerswer" onkeyup="validateAnswer(this);" />
您还应该挂钩选择框的onchange
事件来重置输入框的值。我建议你也考虑HTML5 pattern attribute
。看到
- 小提琴 模式属性支持
- 不支持浏览器的解决方案
从传递给处理程序的事件对象中获取被按下的键。
input type="text" name="answerswer" onkeypress="validateAnswer(this, event);" />
function validateAnswer(element, event) {
if (event.charCode) {
if (/'d/.test(String.fromCharCode(event.charCode))) {
window.alert("You can not enter numbers in this field");
return false;
}
}
}
搜索"onkeypress event"可以找到很多这样的例子
通过向validateAnswer
函数添加一个额外的参数来简化您的工作,如下所示:<input type="text" id="answerswer" name="answerswer" onkeyup="validateAnswer(this);" />
validateAnswer
:
function validateAnswer(elem){
elem.value = elem.value.replace(/[^'d]/g, '');
}
这里有一个例子:http://jsbin.com/iwiduq/1/
相关文章:
- 如何禁止在纯JavaScript形式输入的表单中输入特定字符
- 如何防止丢失PHP表单中输入的输入字段
- HTML.如何检查用户是否在表单中输入了文本
- 在 Jquery 中验证表单的输入字段
- 如何从一个表单的输入字段中获取数据,并使用JQuery在不同的表单中填充相同的输入类型
- 如何在多表单的输入框中使用输入事件javascript
- 表单和输入验证
- HTML使用选择表单更改输入选择(可能使用JQuery?)
- 我需要在提交时将HTML表单中输入的值打印在同一页面上
- JQuery-防止表单在输入按钮上提交,out防止按键敲击
- 使用javascript在表单内部更改表单中输入文本的值
- jQuery禁用表单在输入时提交
- Javascript:在表单中输入数据时,提交按钮不处于活动状态
- 使用jQuery用data-*数据填充表单文本输入
- 如何用javascript中的.txt文件中的值检查表单中输入的值
- 两个单独的表单,输入具有相同的名称和id
- 获取未提交表单的输入值
- 尝试将 Dropbox 文件上传 API 链接到基本的 HTML 表单文件输入
- 如何创建表单元素输入框,标签使用javascript onclick
- Javascript在表单输入框中自动计数字符并在表单数量输入框中输入结果