【问题标题】: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;
        }
    }
}

【问题讨论】:

    标签: javascript


    【解决方案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&gt;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");
        }
        

        【讨论】:

          猜你喜欢
          • 2014-09-04
          • 2011-07-04
          • 1970-01-01
          • 2020-04-18
          • 2011-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多