DOM编程-表单验证

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>表单验证</title>
        <style type="text/css">
            /* 为span标签设置样式 */
            span{
                color: red;            /* 字体红色 */
                font-size: 12px;    /* 字号12px */
            }
            div{
                position: absolute;        /* div绝对定位    与下面2行代码共同起作用 */
                top: 10px;                     /* 距离页面顶部10px */
                left: 40%;                      /* 距离页面左侧40% */
            }

        </style>
    </head>
    <body>
        <script type="text/javascript">
            /*
                1、用户名不能为空
                2、用户名必须在6-14位之间
                3、用户名只能由数字和字母组成,不能含有其他符合。(正则表达式)
                4、密码和确认密码一致,邮箱地址合法
                5、统一失去焦点验证
                6、错误提示信息统一在span标签中提示,并且要求字体红色,字号12号
                7、文本框再次获得焦点后清空错误提示信息,如果文本框中的数据不合法要求清空文本框的value
                8、最终表单中所有项均合法方可提交
            */
            /*
                1、后期可以继续完善,比如密码不能为空,密码强度分为弱、中、强等等。

                2、注意代码编写过程中变量的声明位置            

            */
            // 页面加载完成之后执行
            window.onload =function(){
                // 获取用户名对象
                var usernameEmt = document.getElementById("username");
                // 获取用户名错误信息提示对象
                var span1Emt = document.getElementById("span1");
                
                
                // 绑定用户名失去焦点事件blur
                usernameEmt.onblur = function(){
                    // 获取用户名文本框中的value
                    var username = usernameEmt.value
                    // 去除用户名前后空白
                    username = username.trim();
                    // 创建用户名文本框的正则表达式对象(这里面已经包含了不为空和长度要求)
                    var usernameRegEpx = /^[A-Za-z0-9]{6,14}$/;
                    // 调用正则表达式的test()方法验证输入的用户名是否合法
                    var usernameOk = usernameRegEpx.test(username);
                    if(usernameOk){
                        span1Emt.innerHTML = ""
                    }else{
                        span1Emt.innerHTML = "用户名不合法"
                    }    
                }
                // 用户名文本框绑定获得焦点事件
                usernameEmt.onfocus = function(){
                    // 清空非法的value
                    // 如果用户名后面的错误提示信息不为空(有内容)就是非法的value,就需要清空用户名
                    if(span1Emt.innerHTML != ""){
                        usernameEmt.value = ""
                    }
                    // 清空提示信息(注意这行代码不能写到"清空非法的value"的前面)
                    span1Emt.innerText = "";
                }
                
                // 获取确认密码错误提示标签对象
                var span3Emt = document.getElementById("span3");
                // 获取确认密码框对象
                var pwd2Emt = document.getElementById("password2");
                // 获取密码框对象
                var pwd1Emt = document.getElementById("password1");
                // 绑定确认密码失去焦点事件
                pwd2Emt.onblur = function(){
                    // 获取确认密码和密码
                    var pwd2 = pwd2Emt.value;
                    var pwd1 = pwd1Emt.value;
                    if(pwd2 != pwd1){
                        // 在span3处提示错误信息
                        span3Emt.innerHTML = "密码信息不一致"
                    }
                }
                // 绑定确认密码获得焦点事件focus
                pwd2Emt.onfocus = function(){
                    // 如果确认密码的提示信息不等于空
                    if(span3Emt.innerHTML != ""){
                        // 清空错误的确认密码信息
                        pwd2Emt.value = "";
                    }
                    // 清空确认密码的错误提示信息
                    span3Emt.innerHTML = "";
                }
                
                // 获取邮箱地址框对象
                var emailEmt = document.getElementById("email");
                // 获取邮箱地址错误信息提示标签对象
                var span4Emt = document.getElementById("span4");
                // 绑定邮箱地址失去焦点事件blur
                emailEmt.onblur = function(){
                    // 获取邮箱地址字符串
                    var email = emailEmt.value;
                    // 创建邮箱地址正则表达式对象
                    var emailRegEpx = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                    // 调用正则表达式对象的test()方法
                    var emailOk = emailRegEpx.test(email);
                    if(emailOk){
                        span4Emt.innerHTML = "";
                    }else{
                        // 在邮箱地址错误提示信息处发出错误提示信息
                        span4Emt.innerHTML = "邮箱地址不合法";
                    }
                }
                // 绑定邮箱地址获得焦点事件focus
                emailEmt.onfocus = function(){
                    // 如果邮箱地址提示信息不为空
                    // 下行代码.innerHTML和.innerText都可以,但是不可以.value
                    if(span4Emt.innerText != ""){
                        // 清空邮箱地址
                        emailEmt.value = "";
                    }
                    // 清空邮箱地址错误提示信息
                    span4Emt.innerHTML = "";
                }
                
                // 给提交按钮绑定鼠标单击事件click
                document.getElementById("btn").onclick = function(){
                    // 需要触发用户名和密码确认以及邮箱地址的blur事件
                    // 不需要人工手动操作,使用代码触发。先focus、再blur。

                    usernameEmt.focus();//用户名对象获得焦点事件
                    usernameEmt.blur();//用户名对象失去焦点事件
                    
                    pwd2Emt.focus();//确认密码对象获得焦点事件
                    pwd2Emt.blur();//确认密码对象失去焦点事件
                    
                    emailEmt.focus();//邮箱地址对象获得焦点事件
                    emailEmt.blur();//邮箱地址失去焦点事件
                    
                    // 当所有表单项都合法的时候,提交表单
                    if(span1Emt.innerHTML == "" && span3Emt.innerHTML == "" && span4Emt.innerHTML == ""){
                        // 提交表单
                        document.getElementById("form").submit();
                    }
                }
            }
        </script>
        <div>
        <!--这个表单提交应该使用post,因为有密码,而我们为了检测从而使用get。-->
            <form action="http://localhost:8080/jd/save" method="get" id="form">
                <table>
                    <tr>
                        <td>用&nbsp;&nbsp;户&nbsp;&nbsp;名</td>
                        <td><input type="text" name="username" id="username"/></td>
                        <td><span id="span1"></span></td>
                    </tr>
                    <tr>
                        <td>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</td>
                        <td><input type="text" name="password" id="password1"/></td>
                        <td><span id="span2"></span></td>
                    </tr>    
                    <tr>
                        <td>确认密码</td>
                        <td><input type="text" id="password2"/></td>
                        <td><span id="span3"></span></center></td>
                    </tr>    
                    <tr>
                        <td>邮箱地址</td>
                        <td><input type="text" name="email" id="email"/></td>
                        <td><span id="span4"></span></td>
                    </tr>
                    <tr>
                        <td><input type="reset" value="重置"/></td>
                        <td><input type="button" value="注册" id="btn"/></td><!--把这里的submit改成button-->
                        <td></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《JavaScript DOM编程艺术》第二版是一本非常经典的前端开发书籍,由作者Jeremy Keith和Jeffrey Sambells合作编写而成。该书主要介绍了使用JavaScriptDOM技术进行网页开发的知识,涵盖了DOM操作、事件监听、表单验证、AJAX等内容。 本书首先讲解了DOM的基础知识,包括节点、元素、属性、文本等概念,并介绍了通过JavaScriptDOM进行操作的方法。然后,通过实例讲解了如何根据用户的交互行为来实现动态效果,如当用户点击某个按钮时改变网页的背景色等。 此外,本书还介绍了如何利用AJAX技术进行异步数据交互,比如通过JavaScript动态加载内容等。同时,本书也提供了一些工具和技巧来提高网页的性能和用户体验,比如浏览器兼容性、缓存、图片优化等。 总之,《JavaScript DOM编程艺术》第二版是一本前端开发必读的书籍,可以帮助读者全面掌握JavaScriptDOM技术,在开发网页时提高效率和质量。而PDF版本的书籍更方便读者随时随地学习,建议前端开发人员可以认真阅读和应用到实践中。 ### 回答2: 《JavaScript DOM编程艺术第二版》是一本深入浅出的JavaScriptDOM编程入门书籍,适合初学者学习。 该书共有18章,从JavaScript基础语法和DOM结构开始讲起,一步步引导读者学习JavascriptDOM编程。其中介绍了文档对象模型(DOM)的概念、DOM节点、节点属性与操作等重要知识点,并通过实例和练习帮助读者更好地理解如何使用DOM进行网页设计和开发。此外,书中还介绍了如何使用JavaScript制作动态网页、表单验证、浏览器兼容性问题等实用的开发技巧,为读者提供了丰富的编程经验。 书中使用简洁易懂的语言,结合大量实例和练习,让读者可以快速掌握JavaScriptDOM的核心概念和编程技巧。作者还在书中提供了很多实战案例,让读者可以将所学的知识应用到实际开发中,并且让读者更好地理解如何进行项目开发。 总之,《JavaScript DOM编程艺术第二版》是一本不可多得的优秀JavaScriptDOM编程入门教材,读者只需要具备基本的JavaScriptHTML/CSS知识,即可轻松掌握书中内容,快速提高前端开发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值