JS实现移动端实时监听输入框变化的实例代码
如果是在pc端,监听输入框你可能想到focus、blur、hover、onkeyup这些事件,但是如果是在移动端使用使用这些事件用户体验极差,因为你要用户收起键盘并且再点个空白处才生效,甚至还存在很大的兼容差异。那么怎么解决呢?
方案一
以前做一个简单的模糊搜索框的需求,大致思路是定义一个1s左右执行的定时器,定时器函数里面的逻辑是 判断文本框内容的长度,如果跟上一次长度有变化,就走一遍查询,如果没有变化不执行任何操作。
方案二
利用jquery提供的 input propertychange 事件监听,同时也是判断文本框长度变化,执行查询操作。
显然如果做类似实时响应的模糊查询时,貌似两个方案都差不多,但是如果要实现下面这个效果图的功能时方案二是最优选
如上效果图,没次我在文本框输入内容即实时打印文本长度,当长度满足11且正则校验是正确手机号时,“获取验证码”按钮高亮,且点击事件生效。这是移动端注册类发短信常用的功能,核心代码如下:
.code-highlight { background-color: #eba612; } .code-readonly { background-color: #262523; } .not-active { background-color: #aca9a7; } <input class="li-input" type="tel" autocomplete='off' name="telInput" id="telInput" placeholder="请输入您的手机号"> $(document) .on('input propertychange','#telInput',function (e) { if (e.type === "input" || e.orignalEvent.propertyName === "value") { console.log(this.value.length) if(this.value.length == 11){ var myreg = /^1\d{10}$/; if(!myreg.test(this.value)){ common.tips({msg:'请输入正确手机号'}); return; } $('#getCodeBtn').removeClass('not-active').addClass('code-highlight'); self.options.tel = true; }else{ $('#getCodeBtn').addClass('not-active').removeClass('code-highlight'); self.options.tel = false; } } })
重点是jquery提供的input propertychange这个事件,如果觉得可以,不妨改善下现有的发短信吧,以前我也是用的blur事件..
以上所述是小编给大家介绍的JS实现移动端实时监听输入框变化的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
JavaScript switch case 的用法实例[范围]
JavaScript switch case 的用法实例,大家可以参考下。2009-09-09使用bootstrapValidator插件进行动态添加表单元素并校验
动态添加表单元素,并调用bootstrapValidator的方法为表单添加校验规则,调用addField()方法实现功能。下面通过本文看下具体实现方法吧2016-09-09safari,opera嵌入iframe页面cookie读取问题解决方法
最近做的合作网站嵌入到对方的iframe中去,在safari,opera和有些版本的搜狗浏览器(内核版本原因)中不能读到cookie。2010-06-06基于jQuery通过jQuery.form.js插件使用ajax提交form表单
在jQuery Form插件可以让你很容易的使用AJAX提交Form表单,主要方法ajaxForm和ajaxSubmit负责收集表单元素的信息,管理提交进程。这两种方法都是可配置的,让你完全控制Form提交,本篇文章介绍基于jQuery通过jQuery.form.js插件使用ajax提交form表单,需要的朋友可以参考下2015-08-08
最新评论