JS中的表单验证。

这篇博客探讨了如何使用HTML、CSS和JavaScript实现表单验证,避免页面刷新导致的JS执行问题。通过邮箱、密码和重复密码的验证函数,确保用户输入的有效性和安全性。同时,利用CSS调整样式,提高用户交互体验。在验证失败时,提供明确的提示信息,引导用户正确填写。

HTML部分:

<!-- 避免表单在点击按钮的时候页面刷新无法执行JS的问题出现,我们在 action 里面编写一个地址,这个地址是防止跳转的; action="javascript:void(0)"-->

 <form action="javascript:void(0)" id="login">
        <p>账号:&emsp;&emsp;<input type="text" id="email">
            <span>提示</span>
        </p>
        <p>密码:&emsp;&emsp;<input type="text" id="pwd">
            <span>提示</span>
        </p>
        <p>重复密码:<input type="text" id="rpwd">
            <span>提示</span>
        </p>
        <button id="login-btn">登录</button>
    </form>

CSS部分:

<style>
     #login span {
        display: none;
        font-size: 14px;
        font-weight: bold;
     
</style>

dom选择器获取ID

var email = document.getElementById('email');
var pwd = document.getElementById('pwd');
var rpwd = document.getElementById('rpwd');
var btn = document.getElementById('login-btn')

// 表单验证都是在输入框失去焦点的时候进行验证

         // 登录验证 : 

        // - 当我们所有的元素都通过验证了我们就可以进行登录操作了;

        // - 否则哪里没通过验证就让哪里有焦点,重新输入;

        // - 当一个元素通过验证,我们给元素一个标记;

        // - 在提交之前判定所有的元素是否都有标记,如果没有就终止提交; 

添加事件监听:

 email.addEventListener('blur', validateEamil);
 pwd.addEventListener('blur', validatePwd);
 rpwd.addEventListener('blur', validateRpwd);
 btn.addEventListener('click', isLogin)

邮箱验证的函数:

 //邮箱帐号验证函数
 function validateEamil() {
    //获取输入框的文本内容
    var text = email.value;
    //找到tip提示元素
    var tip = email.nextElementSibling;
    //编写正则进行匹配
    var reg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/;
    if (reg.test(text)) {
         //如果正确
         // 边框标注绿色
         email.style.borderColor = 'green';
         //隐藏tip
         tip.style.display = 'none';
         //验证标志位
         email.validate = true;
     } else {
        // 如果错误
        // 边框标注红色
        email.style.borderColor = 'red';
        // 提示文本
        tip.innerHTML = '请输入正确的邮箱地址';
        //显示tip
        tip.style.display = 'block';
        email.validate = false;
    }

}

// 密码验证 : 

            // - 1. 位数验证 ; 

            // - 2. 密码强度验证 ; 

            // 这种存在多个规则验证的核心在于一个验证没有通过的情况下不继续执行下一个验证; 

            //  - 验证失败就使用 return 跳出程序; 

function validatePwd() {
    var text = pwd.value;
    // 找到tip提示元素
    var tip = pwd.nextElementSibling;
    // 查看位数是否6-20位
    var reg_count = /^.{6,20}$/
    if (!reg_count.test(text)) {
       // 提示
       tip.innerHTML = "密码的长度应该是 6~20位之间,请输入正确位数的密码";
        //显示tip
       tip.style.display = 'block';
       pwd.style.borderColor = "red";
       tip.style.color = 'red';
       pwd.validate = false;
       return false;
        } else {
                tip.style.display = 'none';
        }
    // 继续验证 : 
            // - 如何判定密码强度 : 
            //  - 低 : 只有 数字 | 字母 | 字符串其中之一组成密码
            //  - 中 : 有 数字 | 字母 | 字符串其中之二组成密码
            //  - 高 : 有 数字 | 字母 | 字符串三者功能组成的密码
     var strength = 0;
        if (/\d/.test(text)) {
            strength++;
        }
        if (/[a-zA-Z]/.test(text)) {
            strength++;
        }
        if (/[\!@#\$%\^&\*\(\)_\+]/.test(text)) {
            strength++;
        }
// 根据 strength 数值判定密码强度; 

            switch (strength) {
                case 1:
                    // pwd.focus();
                    tip.innerHTML = "密码强度较低,建议使用数字字母特殊符号组合密码";
                    tip.style.color = 'red';
                    tip.style.display = 'block';
                    pwd.validate = false;
                    break;
                case 2:
                    tip.innerHTML = "密码强度中等,建议使用更高强度的密码";
                    tip.style.color = "orange";
                    tip.style.display = 'block';
                    pwd.validate = true;
                    break;
                case 3:
                    tip.style.display = "none";
                    pwd.style.borderColor = "green";
                    tip.style.display = 'block';
                    pwd.validate = true;
                    break;
            }
       
}

重复密码验证函数:

function validateRpwd() {
     var tip = rpwd.nextElementSibling;
    
     if (pwd.value === rpwd.value) {
          rpwd.style.borderColor = 'green';
          tip.style.display = "none";
          rpwd.validate = true;
       } else {
          tip.style.display = "block";
          tip.innerHTML = '请再次输入相同的密码'
          tip.style.color = 'red';
          rpwd.validate = false;
       }
  }

登录验证

function isLogin() {
            if (!email.validate) {
                email.focus();
                return;
            } else if (!pwd.validate) {
                pwd.focus();
                return;
            } else if (!rpwd.validate) {
                rpwd.focus();
                return;
            } else {
                alert('yes');
            }
        }

js表单验证控制代码大全 /* 目录: 1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字 5:只能输入英文字符和数字 6: js email验证 、js 判断email 、信箱/邮箱格式验证 7:js字符过滤,屏蔽关键字 8:js密码验证、判断密码 2.1: js 不为空、为空或不是对象 、判断为空 、判断不为空 2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 1. 检查一段字符串是否全由数字组成 2. 怎么判断是否是字符 3. 怎么判断是否含有汉字 4. 邮箱格式验证 5. 数字格式验证 6. 电话号码格式验证 7. 判断输入是否为中文的函数 8. 综合的判断用户输入的合法性的函数 9. 判断密码是否输入一致 10. 判断用户名是否为数字字母下滑线 2.8:form文本域的通用校验函数 */ 1. 长度限制 function test() { if(document.a.b.value.length>50) { alert("不能超过50个字符!"); document.a.b.focus(); return false; } } 2. 只能是汉字 3." 只能是英文 function onlyEng() { if(!(event.keyCode>=65&&event.keyCode<=90)) event.returnvalue=false; } 4. 只能是数字 function onlyNum() { if(!((event.keyCode>=48&&event.keyCode=96&&event.keyCode<=105))) //考虑小键盘上的数字键 event.returnvalue=false; } 5. 只能是英文字符和数字 6. 验证油箱格式 function isEmail(strEmail) { if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true; else alert("oh"); } 7. 屏蔽关键字(这里屏蔽***和****) function test() { if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){ alert(":)"); a.b.focus(); return false;} } <form name=a
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值