欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用JavaScript实现简单的表单验证

程序员文章站 2022-07-15 16:50:02
...

用JavaScript实现一个简单的表单验证:

JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。

JavaScript验证内容:

  1. 验证用户名是否为空;
  2. 验证用户名是否在6-14之间;
  3. 验证密码是否为空;
  4. 验证密码是否小于6位;
  5. 验证确认密码是否与密码一致;
  6. 验证所填表单是否正确即符合要求 正确则提交表单;

Form表单

用于收集用户信息,如:登录、注册等场景;所有要提交的数据都必须放在form标签中

action:提交地址、动作,与input标签中typy标签的submit属性相关联。提交地址是action的地址

method:提交方法、该属性用来指定数据传送到服务器的方式。它有两种属性值,分别为 get 和 post。get 属性值表示将输入的数据追加在 action 指定的地址后面,并传送到服务器。当属性值为 post 时,会将输入的数据按照 HTTP 协议中的 post 传输方式传送到服务器。

input标签:输入框,是表单中最重要的部分

name:指定名字,因为提交的是键值对,所以必须要指定名字,否则无法提交,即使提交了也没有意义

value:文本框的内容,一般用在不能输入的类型中,如改变按钮的名字等。

placeholder:占位内容,通常用于提示:

readonly:只读模式,设置后无法修改输入框的内容

disabled:禁用状态

size:由于输入框是单行的,所以只能设置宽度

maxlength:限制输入框最大输入的字符个数
  
type属性:

text:普通文本,标签的默认属性时text ,通常如输入用户名用的是text

passworld:密文文本,输入的内容不显示。如密码输入框

submit:提交按钮。要与action一起用。

radio:单选框,多个关联选项name属性要一致,需要设置value,默认选中用checked设置

这里介绍平时开发网站中两个常见的事件

onfocus: 事件在对象获得焦点时发生。

onblur: 事件会在对象失去焦点时发生。

通俗的讲就是:

当鼠标点击文本框时,文本框获得焦点,触发onfocus,文本框中的值变为空,鼠标点击另外一处时,即文本
框失去焦点,触发onblur事件,进行判断文本框的内容,若value="",则给value赋值请输入用户名。

JavaScript中提交表单的两种方式:

onsubmit事件: 只能表单上使用,提交表单前会触发

onclick事件: 按钮等控件使用, 用来触发点击事件

第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功

<script type="text/javascript">
     function validate(obj) {
        if (confirm("提交表单?")) {
           alert(obj.value);
           return true;
        } else {
           alert(obj.value);
           return false;
        }
     }
  </script>
  <body>
    <form action="http://www.baidu.com" onsubmit="return validate(document.getElementByIdx_x('myText'));"> 
   
       <input type="text" id="myText"/>
       <input type="submit" value="submit"/>
   
    </form>
  </body>

第二种方式:通过button按钮来触发表单提交事件οnclick=“submitForm();”,会忽略掉其他标签中的属性,比如form标签中的onsubmit属性就失效了。这时为了进行表单验证,可以将验证代码放在submitForm();方法中进行验证。

<script type="text/javascript">
     function validate() {
        if (confirm("提交表单?")) {
           return true;
        } else {
           return false;
        }
     }
     
     function submitForm() {
        if (validate()) {
           document.getElementByIdx_x("myForm").submit();
        }
     }
  </script>
  <body>
    <form action="http://www.baidu.com" id="myForm">
   
       <input type="text"/>
       <input type="button" value="submitBtn" onclick="submitForm();"/> <!—也可以使用document.getElementByIdx_x(“该按钮的id”).click();来执行onclick事件-->
   
    </form>
  </body>

表单验证实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>表单验证</title>

</head>

<body>
    <form name="Myform">
        <table>
            <tr>
                <td>
                    用户名:</td>
                <td><input type="text" id="username" name="username" onblur="checkName(this.value)" onfocus="clearNameError()" /></td>
                <td><span id="nameError"></span></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" id="userpswd" name="userpswd" onblur="checkUserpswd(this.value)" onfocus="clearPswdError()" /></td>
                <td><span id="pswdError"></span></td>
            </tr>
            <tr>
                <td>确认密码:</td>
                <td><input type="password" id="confirmpswd" name="confirmpswd" onblur="isSame();" onfocus="clearSameError()" /></td>
                <td><span id="confirmpswdError"></span></td>
            </tr>
            <tr>
                <td><input type="button" value="注册" onclick="checkAll();" /></td>
            </tr>
        </table>
    </form>
    <script type="text/javascript">
        String.prototype.trim = function() {
            return this.replace(/(^\s*)|(\s*$)/g, "");
        }

        function checkName(username) {
            username = username.trim();
            var ok = false;
            var nameError = document.getElementById("nameError");
            if (username == "") {
                nameError.innerHTML = "<font color='red'>用户名不能为空 </font>";
                ok = false;
            } else if (username.length < 6 || username.length > 14) {
                nameError.innerHTML = "<font color='red'>用户名长度6-14 </font>";
                ok = false;
            } else {
                nameError.innerHTML = " ";
                ok = true;
            }
            return ok;
        }

        function clearNameError() {
            var nameError = document.getElementById("nameError");
            nameError.innerHTML = "";
        }

        function checkUserpswd(userpswd) {
            var pswdError = document.getElementById("pswdError");
            var ok = false;
            if (userpswd == "") {
                pswdError.innerHTML = "<font color='red'>密码不能为空 </font>";
                ok = false;

            } else if (userpswd.length < 6) {
                pswdError.innerHTML = "<font color='red'>密码不少于6位 </font>";
                ok = false;

            } else {
                pswdError.innerHTML = "";
                ok = true;

            }
            return ok;
        }

        function clearPswdError() {
            var pswdError = document.getElementById("pswdError");
            pswdError.innerHTML = "";
        }

        function isSame() {
            var userpswd = document.getElementById("userpswd").value;
            var confirmpswd = document.getElementById("confirmpswd").value;
            var confirmpswdError = document.getElementById("confirmpswdError");
            var ok = false;

            if (userpswd != confirmpswd) {
                confirmpswdError.innerHTML = "<font color='red'>密码不一致</font>";
                ok = false;

            } else {
                confirmpswdError.innerHTML = '';
                ok = true;

            }
            return ok;
        }

        function clearSameError() {
            var confirmpswdError = document.getElementById("confirmpswdError");
            confirmpswdError.innerHTML = '';
        }

        function checkAll() {
            var username = document.getElementById("username").value;
            var userpswd = document.getElementById("userpswd").value;
            if (checkName(username) && checkUserpswd(userpswd) && isSame()) {
                document.Myform.submit();
            }
        }
    </script>
</body>
</html>

效果演示

错误示例:
用JavaScript实现简单的表单验证
因为有错误,提交失败:
用JavaScript实现简单的表单验证
提交成功:
用JavaScript实现简单的表单验证