文本区域的验证不起作用
Posted
技术标签:
【中文标题】文本区域的验证不起作用【英文标题】:Validation for text area doesn't work 【发布时间】:2015-01-29 06:09:05 【问题描述】:我开发了一个表单来获取用户输入和文本区域,我想避免用户输入特殊字符。
以下是表单的代码和我用于验证的函数。问题是即使在使用验证之后,它也接受用户输入的特殊字符。我找不到出了什么问题。请帮我。
提前致谢
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page language="java" session="true" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="scripts/scripts.js"></script>
<title>Untitled Document</title>
</head>
<body>
<form name = "MyForm" action="SubmitUser" method ="post" onsubmit="validate()">
<textarea rows="6" cols="150" name="comment" value="">
</textarea>
<input type = "submit" name ="sub" value="Submit">
</body>
</html>
以下是scripts.js
function validate()
var iChars = "!@#$%^&*()+=-[]\\\';,./|\":<>?";
for (var i = 0; i < document.MyForm.comment.value.length; i++)
if (iChars.indexOf(document.MyForm.comment.value.charAt(i)) != -1)
alert ("This Field has special characters. \nSpecial Characters are not allowed");
return false;
【问题讨论】:
【参考方案1】:您没有停止表单的提交事件。要停止正常流程,您可以按照以下逻辑修改代码:
<form name = "MyForm" action="SubmitUser" method ="post">
<textarea rows="6" cols="150" name="comment" value="">
</textarea>
<input type = "button" name ="sub" value="Submit" onclick="validate()">
并将您的 javascript 修改为:
function validate()
var iChars = "!@#$%^&*()+=-[]\\\';,./|\":<>?";
for (var i = 0; i < document.MyForm.comment.value.length; i++)
if (iChars.indexOf(document.MyForm.comment.value.charAt(i)) != -1)
alert ("This Field has special characters. \nSpecial Characters are not allowed");
return false;
document.MyForm.submit();
希望您已经掌握了进行验证的逻辑!
【讨论】:
【参考方案2】:你想使用正则表达式。
var iChars = new RegExp(/[@!#$%^&*()+=\[\]\-\\\';,./|\":<>?]/)
var x = "AB@"
iChars.test(x) // true
或者简单地说,如果 \W 满足您的需求,
var re = new RegExp(/\W/)
re.text(x)
有关正则表达式的更多信息,请参阅here
【讨论】:
【参考方案3】:您可以使用 match() method :
var comment = document.MyForm.comment.value;
var res = comment.match(/\W/);
\W
匹配任何非单词字符。
那么你的res
结果是一个匹配字符串的数组,只要测试res.length>0
那么输入的评论是无效的。
那么你的功能是:
function validate()
var comment = document.MyForm.comment.value;
var res = comment.match(/\W/);
if(res.length>0) alert ("This Field has special characters. \nSpecial Characters are not allowed");
【讨论】:
以上是关于文本区域的验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章