H5 调起车牌号码键盘

DIV

     <!--键盘输入框-->
<div class="weui-cell weui-cell_active" id="js_cell"> <div class="weui-cell__hd"><label class="weui-label">车牌号码</label></div> <div class="weui-cell__bd weui-flex" id="key"> <input id="car_no" class="weui-input" type="text" style="display: none"/> <div class="carLicenseMain"> <ul id="all"> <li class="active" id="c1"></li> <li id=“c2”></li> <li id=“c3”></li> <li id=“c4”></li> <li id=“c5”></li> <li id=“c6”></li> <li id=“c7”></li> <li class="xinnengyuan" id=“c8”></li> </ul> </div> </div> </div>

  

<!--键盘--> 
<div id="keyboardBox"> <div class="provienceBox" id="provienceBox"> <div class="shutprovince" id="shut"><img src="../image//xiala.png" class="xiala"/></div> <ul> <li>京</li> <li>津</li> <li>渝</li> <li>沪</li> <li>冀</li> <li>晋</li> <li>辽</li> <li>吉</li> <li>黑</li> <li>苏</li> </ul> <ul> <li>浙</li> <li>皖</li> <li>闽</li> <li>赣</li> <li>鲁</li> <li>豫</li> <li>鄂</li> <li>湘</li> <li>粤</li> <li>琼</li> </ul> <ul> <li>川</li> <li>贵</li> <li>云</li> <li>陕</li> <li>甘</li> <li>青</li> <li>蒙</li> <li>桂</li> <li>宁</li> <li>新</li> </ul> <ul> <li class="changeContentBtn other">ABC</li> <li>藏</li> <li>使</li> <li>领</li> <li>警</li> <li>学</li> <li>港</li> <li>澳</li> <li class="deleteBtn other">删除</li> </ul> </div> <div class="textBox" id="textBox"> <div class="shutprovince" id="shuta"><img src="../image//xiala.png" class="xiala"/></div> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> <li>0</li> </ul> <ul> <li>Q</li> <li>W</li> <li>E</li> <li>R</li> <li>T</li> <li>Y</li> <li>U</li> <li>I</li> <li>O</li> <li>P</li> </ul> <ul> <li>A</li> <li>S</li> <li>D</li> <li>F</li> <li>G</li> <li>H</li> <li>J</li> <li>K</li> <li>L</li> </ul> <ul> <li class="changeContentBtn other">省份</li> <li>Z</li> <li>X</li> <li>C</li> <li>V</li> <li>B</li> <li>N</li> <li>M</li> <li class="deleteBtn other">删除</li> </ul> </div> </div>

  CSS


.shutprovince{ margin-bottom: 5px; height: 2.2rem; line-height: 1.9rem; text-align: right; padding: 0 0.6rem; font-size: 0.85rem; background-color: #f9f9f9; color: #333; border-bottom: 0.03rem solid #ddd; border-top: 0.01rem solid #eee; } .carLicenseMain{ 100%; /* height: 160px; */ display: flex; flex-direction: column; align-items: center; justify-content: center; } .carLicenseMain ul{ 100%; height: 36px; /* display: flex; */ flex-direction: row; align-items: center; justify-content: center; } .carLicenseMain ul li{ 22px; height: 40px; border: 1px solid #cccccc63; text-align: center; line-height: 40px; float: left; } .carLicenseMain ul li:last-of-type{ margin: 0; } .carLicenseMain ul li.active{ border: 2px solid #06ae5661; } .carLicenseMain ul li.xinnengyuan{ background: url(../image/jia.png) no-repeat center; background-size: 65% 50%; border: 2px dashed #CCCCCC; } .xiala{ 7.5%; margin-top:7px; }

  JS

$(document).ready(function() {
    var num1="";
    var isclick= true; 
    //键盘隐藏,点击触发显示

    $("#keyboardBox").hide()
    $(".carLicenseMain").on("click",function(){
        $("#keyboardBox").show()
    })
    //关闭事件-省份
    $("#shut").on("click",function(){
        $("#keyboardBox").hide()
    })
    //关闭事件-数字
    $("#shuta").on("click",function(){
        $("#keyboardBox").hide()
    })
    //键盘点击动画
    $(".textBox ul li").each(function(){
        $(this).click(function(){
            $(this).addClass("activeKey")//添加动画效果
            $(this).siblings().removeClass("activeKey")//移除动画效果
            var interval=setTimeout(function(){//定时器及时清除自身动画效果
                $(this).removeClass("activeKey")
                window.clearInterval(interval)
            }.bind(this),200);
        })
    })
    var num = 6;//需要输入的车牌数
    //切换键盘
    $('.changeContentBtn').click(function(){
        $('li').siblings().removeClass("activeKey")
        if($(this).html()=='ABC'){
            $('#textBox').show();
            $('#provienceBox').hide();
        }else{
            $('#textBox').hide();
            $('#provienceBox').show();
        }
    })
     
    //新能源点击事件
    $('.xinnengyuan').click(function(){
        num = 7;
        var index = getIndex();
        //alert(index);
        //console.log(isclick);
        //console.log( $('.carLicenseMain ul li.active').html($(self).html()).addClass('active'));
       // console.log(index+""+num);
        num1 =  $("#car_no").val();
        
        if(isclick)
        {
            isclick= false;
            if(num1.length == 7)
            {
                //console.log("这里d");
                //$('.carLicenseMain ul li.active').html($(self).html()).addClass('active'); 
                //判断第八位数值是否为空,如果为空,点击后绿色框不移到下一个框内
                $('.carLicenseMain ul li.active').html($(self).html()).removeClass('active').next().addClass('active');  
               
            }
            // setTimeout(function(){ 
            //     isclick = true;
            // }, 60000);
        }
        //console.log(num1);
        //输入车牌号不满足七位数,无法输入最后一位
       
        //防止重复点击,选中后禁止点击
        $(this).removeClass('xinnengyuan');
    })
    //获取当前车牌数字索引
    function getIndex(){
        var index = 0;
        $('.carLicenseMain ul li').each(function(){
            var reg = new RegExp('active');
            if(reg.test($(this).attr('class'))){
                //console.log(reg.test($(this).attr('class')));
                index = $(this).index();
            }
        })
        return index;
    }
    //自定义键盘处理函数
    function keyboard(num,self){
        var index = getIndex();
        //判断输入第一位为汉字
        //alert(index);
        if(index == 0)
        {
            var str = self.innerText;
            //alert(str);
            var str1 = /^[u4e00-u9fa5]*$/.test(str);
            if(str1 == false)
            {
                $("#error_tip").show();
                    $("#error_tip").html("请输入省份");
                    return false;
            }
            else
            {
                //alert(str);
                // document.getElementById('c1').innerText =str;
                $("#error_tip").hide();
            }
        }
        if(index == 1)
        {
            var str = self.innerText;
            //alert(str);
            var str1 = /^[a-zA-Z]*$/.test(str);
            if(str1 == false)
            {
                $("#error_tip").show();
                    $("#error_tip").html("请输入合法的英文标识");
                    return false;
            }
            else
            {
                $("#error_tip").hide();
            }
        }
        console.log(index);
        if(index > 1)
        {
            var str = self.innerText;
            //alert(str);
            var str1 = /^[u4e00-u9fa5]*$/.test(str);
            if(str1)
            {
                $("#error_tip").show();
                    $("#error_tip").html("请输入合法号码");
                    return false;
            }
            else
            {
                $("#error_tip").hide();
            }
        }
        
        var stra = self;
        //alert( $("#c1").innerText);
        a(index,stra);
        //console.log($("#c1").innerText+$("#c2").innerText)
        if(index<=num){
            if(index == num){
                //console.log($('.carLicenseMain ul li.active').html($(self).html()));
                $('.carLicenseMain ul li.active').html($(self).html());
            }else{
               // console.log($(self).html());
                //console.log($('.carLicenseMain ul li.active').html($(self).html()));
                $('.carLicenseMain ul li.active').html($(self).html()).removeClass('active').next().addClass('active');           
            }
            
            $('#textBox').show();
            $('#provienceBox').hide();
        }
    }
    //为车牌号码赋值
    function a(index,self){
        switch(index){
            case 0:
                $("#car_no").val(self.innerText);
                break;
            case 1:
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                break;
            case 2:
                //num3 = num2+self.innerText;
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                break;
            case 3:
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                break;
            case 4:
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                break;
            case 5:
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                break;
            case 6:
                //当index ==6时,取最后一次的值赋值
                var n1 = $("#car_no").val();
                if(n1.length ==7)
                {
                    n1 = n1.substring(0, n1.length - 1);  
                }
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                //$("#c7").innerHTML=self.innerText;
                break;
            case 7:
                var n1 = $("#car_no").val();
                var n2 = n1 + self.innerText;
                $("#car_no").val(n2);
                //$("#c8").innerHTML=self.innerText;
                break;
            
        }
       // $("#car_no").val(num3);
        //console.log($("#car_no").val(num3));
       // $("#car_no").val(car);
        //return c1+c2;
    }
    //省份键盘点击事件
    $('#provienceBox ul li:not(.other)').click(function(){
        $(this).addClass("activeKey")//添加动画效果
        $(this).siblings().removeClass("activeKey")//移除动画效果
        var interval=setTimeout(function(){//定时器及时清除自身动画效果
            $(this).removeClass("activeKey")
            var self = this;
            keyboard(num,self);
            window.clearInterval(interval)
        }.bind(this),200);
        //省份点击后键盘切换
        //var self = this;
        //keyboard(num,self);
    })
    //文本键盘点击事件
    $('#textBox ul li:not(.other)').click(function(){
        var self = this;
        keyboard(num,self);
    })
    //回退按钮点击事件
    $('.deleteBtn').click(function(){
        var index = getIndex();
        //isclick = true;
        if(index == num){
            if($('.carLicenseMain ul li.active').html() != ''){
                $('.carLicenseMain ul li.active').html('');
                //$('.carLicenseMain ul li:last-of-type').addClass('xinnengyuan');
            }else{
                if(index == 7){
                    $('.carLicenseMain ul li:last-of-type').addClass('xinnengyuan');
                    num = 6;
                }
                $('.carLicenseMain ul li.active').removeClass('active').prev().addClass('active').html('');
                isclick = true;
            }
        }else if(index < num && index > 1){
            $('.carLicenseMain ul li.active').removeClass('active').prev().addClass('active').html('');
        }else if(index == 1){
            $('.carLicenseMain ul li.active').removeClass('active').prev().addClass('active').html('省');
        }
        //每点击一次,car_no的长度减一
        var carno = $("#car_no").val();
        if(carno.length >0)
        {
            var delcarno = carno.substring(0, carno.length - 1);  
            $("#car_no").val(delcarno);
            if(delcarno ==0)
            {
                $('#textBox').hide();
                $('#provienceBox').show();
            }
        }
    })
    //提交按钮点击事件
    $('#submitBtn').click(function(){
        var carNum=""
        $(".carLicenseMain ul li").each(function(index){
            carNum+=$(this).html()
        })
        alert(carNum)
    })
})

  

原文地址:https://www.cnblogs.com/syeacfpl/p/14699348.html