用JavaScript实现简单的表单验证

用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>

效果演示

错误示例:
未填入内容
因为有错误,提交失败:
提交失败
提交成功:
成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值