首页 > 代码库 > m站页面input keyup兼容性
m站页面input keyup兼容性
我们经常遇到字数统计、搜索请求的业务需求,一般需要监听input的keyup事件,paste事件,
在手机上也一样。比如说我们有一个id为J_input的input用来接收用户的输入,
一个id为J_show的p用来实时显示用户的输入状态。js代码如下:
var dInput = document.getElementById(‘J_input‘), dShow = document.getElementById(‘J_show‘), back = function(e){ e.stopPropagation(); dShow.innerText = dInput.value; };dInput.addEventListener(‘keyup‘, back, false);dInput.addEventListener(‘paste‘, back, false);
完整的html代码为:
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8"> <title>input keyup事件兼容性</title> <style> *{margin:0; padding:0;} span strong{color:#FA0; font-family:Constantia, Georgia; font-size:32px;} </style></head><body>请这里输入:<input type="text" id="J_input" /><br/><br/>您输入的是:<span id="J_show">...</span><script>var dInput = document.getElementById(‘J_input‘), dShow = document.getElementById(‘J_show‘), back = function(e){ e.stopPropagation(); var html = ‘‘, val = dInput.value, len = val.length; for(var i = 0; i < len; i++){ var str = val[i]; if(/^\d$/.test(val[i])){ str = ‘<strong>‘+ str +‘</strong>‘; } html += str; } dShow.innerHTML = html; };dInput.addEventListener(‘keyup‘, back, false);dInput.addEventListener(‘paste‘, back, false);</script></body></html>
now, 让我们进入今天的终点,手机端有些输入法(比如Anroid的百度输入法)对keyup没有响应,或是对中文输入无响应,这个时候我们需要添加oninput事件(哈哈,没听说过吧),
这个事件类型,IE是不支持的,但是就像你所想的,IE总是有自己的一套,IE下对应的是事件是propertychange,意思就是属性值变化事件(value也是dom元素的一个属性啊)
如此为了兼容手机端的各种不友好的输入法,我们在原先keyup,paste的基础上,再新增input和propertychange事件就好了;
dInput.addEventListener(‘keyup‘, back, false);dInput.addEventListener(‘paste‘, back, false);dInput.addEventListener(‘input‘, back, false);dInput.addEventListener(‘propertychange‘, back, false);
m站页面input keyup兼容性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。