输入框输入手机号并匹配历史记录

html:

<ul class="form-list border-list">
                <li>
                    <input class="mobile" type="text" placeholder="请输入11位手机号码">
                    <p class="motion-shop"><i class="icon-hook"></i><span>广州移动</span></p>
                    <ul class="hist-box border-bottom hide">
                        <li class="histNum"><span class="historynum">13748941231</span>
                        <span class="font-red">这是手机号码</span></li>
                        <li class="histNum"><span class="historynum">18848941232</span>
                        <span class="font-red">这是手机号码</span></li>
                        <li class="histNum"><span class="historynum">15048941233</span>
                        <span class="font-red">这是手机号码</span></li>
                    </ul>
                </li>
</ul>

css:

.form-list li {
   position: relative;
   display: -webkit-box;
   -webkit-box-align: center;
   padding: 10px;
   box-sizing: border-box;
}


.form-list input {
    -webkit-box-flex: 1; 
    display: -webkit-box; 
    -webkit-box-orient: vertical; 
    -webkit-box-pack: center;
}
.hist-box {
   position: absolute;
   top: 44px;
   width: 100%;
   left: 0;
   background: #fff;
   padding: 10px;
   box-sizing: border-box;
}
.hist-box .histNum {
   color: #898989;
   font-size: 14px;
}


js:

	//聚焦输入框
        $('.mobile').bind('click',function(event){
            var $_this = $(this);
            
            $(this).siblings('.hist-box').removeClass('hide');

            $_this.on('input propertychange',function(){
                var flag = false;
                var inputLen = $_this.val().length; //输入框输入的文字长度

                $('.hist-box li').each(function(){//判断字符串是否匹配
                    var shortStr = $(this).find('.historynum').html().substring(0,inputLen);
                    if($_this.val().match(shortStr)){
                        flag = true;
                    }
                });
              
                if(flag == true && inputLen < 11){
                    $_this.siblings('.hist-box').removeClass('hide');
                }else {
                    $_this.siblings('.hist-box').addClass('hide');
                }
            });
          
           
            //点击历史号码
            $('.hist-box li').on('click',function(event) {
                var histNum = $(this).find('.historynum').html();
                $_this.val(histNum);
                $(this).parent('.hist-box').addClass('hide');
            }); 
        });



解题思路:此题的重点是实时判断输入框内容的长度,并且遍历历史记录的号码,用substring()方法截取与输入框长度一致的字符串;然后通过match()函数看输入框的内容与截取的字符串是否一致,如果一致则继续显示历史记录框,否则隐藏。


效果如图:当输入框输入的号码与以下历史不一致,则会隐藏历史记录部分框。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值