Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文本区域的验证无效_Javascript - Fatal编程技术网

Javascript 文本区域的验证无效

Javascript 文本区域的验证无效,javascript,Javascript,我已经开发了一个表单来获取用户输入和文本区域,我希望避免用户键入特殊字符 下面是我用于验证的表单和函数的代码。问题是,即使在使用验证之后,它也会接受用户输入的特殊字符。我找不到哪里出了问题。请帮帮我 提前谢谢 index.jsp <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page language="java" session="true" %> <!DOCTYPE html> &l

我已经开发了一个表单来获取用户输入和文本区域,我希望避免用户键入特殊字符

下面是我用于验证的表单和函数的代码。问题是,即使在使用验证之后,它也会接受用户输入的特殊字符。我找不到哪里出了问题。请帮帮我

提前谢谢

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;
        }
    }
}

您想使用RegExp

var iChars = new RegExp(/[@!#$%^&*()+=\[\]\-\\\';,./{}|\":<>?]/)
var x = "AB@"
iChars.test(x) // true
有关regexp的详细信息,请参见。您可以使用:

\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");
}

您没有停止表单的提交事件。要停止正常流程,您可以修改以下代码逻辑:

<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();
}
希望您具有进行验证的逻辑

<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()">
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();
}