暂时只可以达到的程度简单表单验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .results {
            border: 1px solid red;
            height:20px;
            display:none;
        }
        label {
            display:block;
        }
    </style>
</head>
<body>
    <form  name='myform' id='myform'>
        <label for="username">
            <span>用户名:</span>
            <input type="text" name="username" value=""  placeholder="admin">
            <div class="results" id="result_username"></div>
        </label>
        <label for="password">
            <span>密码:</span>
            <input type="password" name="password" value="">
            <div class="results" id="result_password"></div>
        </label>         
        <label for="age">
            <span>再次输入密码:</span>
            <input type="password" name="password2" value="">
            <div class="results" id="result_password2"></div>
        </label>
        <label for="school">
            <span>学历:</span>
            <select name='school'>
                <option value="1">本科</option>
                <option value="2">专科</option>
                <option value="3">高中</option>
            </select>
        </label>        
        <label for="hobby[]">
            <span>兴趣:</span>
            <div>
                <input type="checkbox" name="hobby[]" value="1"> 排球
                <input type="checkbox" name="hobby[]" value="2"> 篮球
                <input type="checkbox" name="hobby[]" value="4"> 足球
                <input type="checkbox" name="hobby[]" value="8"> 中国足球
                <input type="checkbox" name="hobby[]" value="16"> 地球
            </div>           
            <div class="results" id="result_hobby"></div>
        </label>
        <label for="from">
            <span>来自:</span>
            <div>
                <input type="radio" name="from" value="1"> 东北
                <input type="radio" name="from" value="2"> 华北
                <input type="radio" name="from" value="3"> 西北
                <input type="radio" name="from" value="4"> 华东
                <input type="radio" name="from" value="5"> 华南
                <input type="radio" name="from" value="6"> 华西
            </div>
            <div class="results" id="result_from"></div>
        </label>      
        <input id='register' type="button"  value="提交">
    </form>
    <table border='1'>
        <thead >
            <tr>
                <th>用户名</th>
                <th>学历</th>
                <th>兴趣</th>
                <th>来自</th>
                <th>注册时间</th>
            </tr>
        </thead>
    </table>
    <script src='./jquery-1.8.3.min.js'></script>
    <script>
        //扩展jquery把获得的值转换为json格式
        $.fn.serializeObject = function(){
            var o = {};
            var a = this.serializeArray();
            $.each(a, function() {
                if (o[this.name] !== undefined) {
                    if (!o[this.name].push) {
                        o[this.name] = [o[this.name]];
                    }
                    o[this.name].push(this.value || '');
                } else {
                    o[this.name] = this.value || '';
                }
            });
            return o;
        };
    </script>
    <script>
        var myForm = (function(){
            return {
                el : {},
                init : function() {
                    var that = this;
                    $.extend(that.el,{
                        'myform': $('#myform'),
                        'username' : $('#result_username'),
                        'password' : $('#result_password'),
                        'password2' : $('#result_password2'),
                        'hobby': $('#result_hobby'),
                        'form' : $('#result_from'),
                        'register' : $('#register'),
                        'results' :$('.results')
                    })
                    this.click_hobby();
                    this.click_form();
                    this.focus_or_blur();
                    this.click_register();
                },
                //获得焦点提示用户
                focus_username : function(){
                    this.el.username.css({'display':'block'});
                    this.el.username.html('只能输入中文或者英文');
                },
                //失去焦点判断用户是否符合
                blur_username : function(){                  
                    var pre = this.el.username.prev().val();
                    var reg=/^[\u4E00-\u9FA5A-Za-z]+$/;
                    if (pre=='') {
                        this.el.username.html('(必填项)用户名不能为空哦');
                        this.el.username.css({'display':'block'});
                        return false;
                    }else if (!reg.test(pre)) {
                        this.el.username.html("用户名输入不合法");
                        this.el.username.css({'display':'block'});
                        return false;
                    }else{
                        this.el.username.html("");
                        this.el.username.css({'display':'none'});
                        return false;
                    }
                },
                //获得焦点提示用户密码
                focus_password : function(){
                    this.el.password.css({'display':'block'});
                    this.el.password.html('请输入6到12位的密码');
                },
                //失去焦点判断用户密码是否符合
                blur_password : function(){
                    var pre = this.el.password.prev().val();                 
                    var reg=/^[\w]{6,12}$/;
                    if(!reg.test(pre)){
                        this.el.password.html("输入的密码必须6到12位");
                        this.el.password.css({'display':'block'});
                        return false;
                    }else{
                        this.el.password.html("");
                        this.el.password.css({'display':'none'});
                        return false;
                    }
                },
                //获得焦点提示用户密码
                focus_password2 : function(){
                    this.el.password2.css({'display':'block'});
                    this.el.password2.html('请输入6到12位的密码');
                },
                //失去焦点判断用户密码是否符合
                blur_password2 : function(){
                    var pre2 = this.el.password2.prev().val(); 
                    var pre1 = this.el.password.prev().val();                 
                    var reg=/^[\w]{6,12}$/;
                    if(pre2!=pre1){
                        this.el.password2.html("两次密码不一致");
                        this.el.password2.css({'display':'block'});
                    }else if(!reg.test(pre2)){
                        this.el.password2.html("输入的密码必须6到12位");
                        this.el.password2.css({'display':'block'});
                        return false;
                    }else{
                        this.el.password2.html("");
                        this.el.password2.css({'display':'none'});
                        return false;
                    }
                },
                //判断hobby是否有选择
                checked_hobby : function(){
                    var hobbyBox = this.el.hobby.prev().find('input');
                    var len = hobbyBox.length;
                    for(var i=0;i<len;i++){
                        if(hobbyBox[i].checked==true){
                            return true;
                            break;
                        }
                    }
                    return false;
                },
                //判断地点是否有选择
                checked_form : function(){
                    var formRadio = this.el.form.prev().find('input');
                    var len = formRadio.length;
                    for(var i=0;i<len;i++){
                        if(formRadio[i].checked==true){
                            return true;
                            break;
                        }
                    }
                },
                //是否合法点击按钮
                Toggle_meet: function(){
                    var that = this;
                    var len = that.el.results.length;
                    for(var i=0;i<len;i++){
                        if($(that.el.results[i]).css('display') === 'block'){
                            return false;
                            break;
                        }
                    }
                    return true;
                },
                //点击提交时做的事
                click_register : function(){
                    var that = this;
                    this.el.register.on('click',function(){
                        if(!that.checked_hobby()){
                            that.el.hobby.css({'display':'block'});
                            that.el.hobby.html('至少选择一个爱好');
                        }
                        if(!that.checked_form()){
                            that.el.form.css({'display':'block'});
                            that.el.form.html('请选择来自的地点');
                        }
                        that.blur_username();
                        that.blur_password();
                        that.blur_password2();
                        if(that.Toggle_meet){
                            that.myForm_ajax();
                        }
                    }) 
                },
                //当用户点checkbox击时取消提示
                click_hobby : function(){
                    var that = this;
                    var hobbyBox = this.el.hobby.prev().find('input');
                    hobbyBox.on('click',function(){
                        if(that.checked_hobby()){
                            that.el.hobby.css({'display':'none'});
                            that.el.hobby.html('');
                        }
                    })
                },
                //当用户点radio击时取消提示
                click_form : function(){
                    var that = this;
                    var formBox = this.el.form.prev().find('input');
                    formBox.on('click',function(){
                        if(that.checked_form()){
                            that.el.form.css({'display':'none'});
                            that.el.form.html('');
                        }
                    })
                },
                //用户获得焦点
                focus_or_blur : function(){
                    var that = this;
                    this.el.username.prev().on('focus',function(){
                        that.focus_username();
                    })
                    this.el.username.prev().on('blur',function(){
                        that.blur_username();
                    })
                    this.el.password.prev().on('focus',function(){
                        that.focus_password();
                    })
                    this.el.password.prev().on('blur',function(){
                        that.blur_password();
                    })
                    this.el.password2.prev().on('focus',function(){
                        that.focus_password2();
                    })
                    this.el.password2.prev().on('blur',function(){
                        that.blur_password2();
                    })
                },
                //验证都完成请求我们想要的后台的数据
                myForm_ajax : function(){
                    $.ajax({
                            url :'./myphp.php',
                            type :'POST',
                            data : $('#myform').serializeObject(),
                            dataType:'json',
                            success : function(data){
                                console.log(data);
                            }
                        }               
                    )
                }
                
            }
        })()
        myForm.init();
    </script>
</body>
</html>

  

posted @ 2017-09-09 10:28  smallteeth  阅读(169)  评论(0编辑  收藏  举报