Bootstrap项目(表单)实践3

Bootstrap项目(表单)实践3

一、成果展示




[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、主要代码

表单代码:

<form class="form-horizontal container-fluid">
                <div class="form-group">
                    <label for="phone" class="col-xs-3 control-label" >手机号:</label>
                    <div class="col-xs-4">
                        <input type="text" class="form-control" autocomplete="off" id="phone" placeholder="请输入11位手机号">
                    </div>
                    <div class="col-xs-5">
                        <i class="iconfont"></i>
                    </div>
                </div>
                <div class="form-group">
                    <label for="info" class="col-xs-3 control-label">短信验证:</label>
                    <div class="col-xs-4">
                        <input type="text" class="form-control" id="info" autocomplete="off" placeholder="请输入6位验证码">
                    </div>
                    <div class="col-xs-5">
                        <i class="iconfont"></i>
                    </div>
                </div>
                <div class="form-group">
                    <label for="password" class="col-xs-3 control-label">登录密码:</label>
                    <div class="col-xs-4">
                        <input type="password" class="form-control" id="password" autocomplete="off" placeholder="请输入6~10位的密码">
                    </div>
                    <div class="col-xs-5">
                        <i class="iconfont"></i>
                    </div>
                </div>
                <!--密码安全等级-->
                <div class="form-group">
                    <ul class="col-xs-offset-3 col-xs-5">
                        <li class="left">安全等级:</li>
                        <li id="grade1" class="left grade"></li>
                        <li id="grade2" class="left grade"></li>
                        <li id="grade3" class="left grade"></li>
                    </ul>
                </div>
                <div class="form-group">
                    <label for="pass_error" class="col-xs-3 control-label">确认密码:</label>
                    <div class="col-xs-4">
                        <input type="password" class="form-control" id="pass_error" placeholder="请验证密码">
                    </div>
                    <div class="col-xs-5">
                        <i class="iconfont"></i>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-xs-offset-3 col-xs-5">
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="checkbox">
                                同意协议并注册<a href="javascript:;">《知晓用户协议》</a>
                            </label>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-xs-offset-4 col-xs-4">
                        <div><input type="button" value="完成注册" id="submit"></div>
                    </div>
                </div>
            </form>

js代码:

提交按钮响应函数有些地方没去优化,重复地方可以去封装简化。

<script type="text/javascript ">
        window.onload = function(){
    
    
            var phone = document.getElementById("phone");   //获取手机号
            var info = document.getElementById("info");     //获取验证码
            var password = document.getElementById("password"); //获取密码
            var pass_error = document.getElementById("pass_error"); //获取密码
            // 获取单选按钮
            var radio = document.getElementById("checkbox");
            // 绑定提交按钮
            var submit = document.getElementById("submit");
            submit.onclick = function(){
    
    
                var iconfont = document.getElementsByClassName("iconfont");     //获取输入框元素
                var ul_ = document.getElementsByTagName("ul")[0];
                var grade = document.getElementsByClassName("grade");           //获取安全等级元素
                if(radio.checked !== true){
    
    
                    alert("请勾选协议!");
                }else{
    
    
                    if(/^\w{6,10}$/.test(password.value)){
    
    
                        ul_.style.display = "block";
                        if ((/[A-z]+/.test(password.value))&&(/[0-9]+/.test(password.value))&&(/_+/.test(password.value))&&(/\w{10}/.test(password.value))) {
    
    
                            grade[0].style.display = "block";
                            grade[1].style.display = "block";
                            grade[2].style.display = "block";
                        } else if (/\w{10}/.test(password.value)||((/[A-z]+/.test(password.value))&&(/[0-9]+/.test(password.value))&&(/_+/.test(password.value)))) {
    
    
                            grade[0].style.display = "block";
                            grade[1].style.display = "block";
                            grade[2].style.display = "none";
                        } else{
    
    
                            grade[0].style.display = "block";
                            grade[1].style.display = "none";
                            grade[2].style.display = "none";
                        }
                    }else{
    
    
                        ul_.style.display = "none";
                    }
                    if((/^1(\d){10}$/.test(phone.value))&&(/^[0-9]{6}$/.test(info.value))&&(/\w{6,10}$/.test(password.value))&&(/\w{6,10}$/.test(pass_error.value))&&(password.value === pass_error.value)){
    
    
                        iconfont[0].innerHTML = "手机号格式正确";
                        iconfont[1].innerHTML = "验明证正确";
                        iconfont[2].innerHTML = "密码格式正确";
                        iconfont[3].innerHTML = "密码正确";
                        for(var i=0;i<=3;i++){
    
    
                            iconfont[i].className = "iconfont iconcheck-item-filling";
                            iconfont[i].style.color = "green";
                        }
                        alert("恭喜您注册成功!");
                    }else{
    
    
                        if(/^1(\d){10}$/.test(phone.value)){
    
    
                            iconfont[0].className = "iconfont iconcheck-item-filling";
                            iconfont[0].innerHTML = "手机号格式正确";
                            iconfont[0].style.color = "green";
                        }else{
    
    
                            iconfont[0].className = "iconfont icondelete-filling";
                            iconfont[0].innerHTML = "手机号格式错误,请重新输入";
                            iconfont[0].style.color = "red";
                        }
                        if(/^[0-9]{6}$/.test(info.value)){
    
    
                            iconfont[1].className = "iconfont iconcheck-item-filling";
                            iconfont[1].innerHTML = "验明证正确";
                            iconfont[1].style.color = "green";
                        }else{
    
    
                            iconfont[1].className = "iconfont icondelete-filling";
                            iconfont[1].innerHTML = "验证码错误,请重新输入";
                            iconfont[1].style.color = "red";
                        }
                        if(/^\w{6,10}$/.test(password.value)){
    
    
                            iconfont[2].className = "iconfont iconcheck-item-filling";
                            iconfont[2].innerHTML = "密码格式正确";
                            iconfont[2].style.color = "green";
                        }else{
    
    
                            iconfont[2].className = "iconfont icondelete-filling";
                            iconfont[2].innerHTML = "密码为任意字母、数字、下划线";
                            iconfont[2].style.color = "red";
                        }
                        if((password.value === pass_error.value)&&(/^\w{6,10}$/.test(pass_error.value))){
    
    
                            iconfont[3].className = "iconfont iconcheck-item-filling";
                            iconfont[3].innerHTML = "密码正确";
                            iconfont[3].style.color = "green";
                        }else{
    
    
                            iconfont[3].className = "iconfont icondelete-filling";
                            iconfont[3].innerHTML = "密码不一致,请重新输入";
                            iconfont[3].style.color = "red";
                        }
                    }
                }
            }
        }
    </script>

三、遇到的问题

1.布局

因为之前是用css来进行布局,后又在其基础上改成boot strap框架来写,导致之前的样式错乱,自己又慢慢的把不用的样式删除,最后修改过来。

2.表单宽度

因为在缩小视口时表单的宽度太大导致样式错乱,我把表单最小宽度设为定值,当宽度将小于定制时表单宽度不在响应视口变化

3.栅格系统布局

我开始直接应用框架的代码,后来在响应时发现栅格设置有问题,宽度不够,而且源代码只设置了sm级别,导致在sx级别时排版错乱,自己又改变不同位置的列宽来解决,并且通过偏移让一些列移到相应位置。

Guess you like

Origin blog.csdn.net/qq_56180999/article/details/117592106