中文输入法不触发onkeyup事件的解决办法


Posted in Javascript onJuly 09, 2014

这两天做一个需要实时监控文本框输入的功能,碰到了中文输入法无法触发onkeyup事件的恶心问题。

具体表现是这样的:

当监听一个input的keyup的事件的时候,英文输入法的情况下可以实时的通过keyup事件检测到文本框value的变化,但是当输入法变成中文后,input的keyup事件就不会被正常触发。这是最先前的写法。

<html>
<head>
<script type="text/javascript" src="https://3water.com/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
  <p>
    使用keyup事件检测文本框内容:
  </p>
  <p>
    <input type="text" name="keyup_i" id="keyup_i" autocomplete="off"/>
    <span id="keyup_s"></span>
    <script type="text/javascript">
      $('#keyup_i').bind('keyup', function(){
        $('#keyup_s').text($(this).val());
      })
    </script>
  </p>
</body>
</html>

如你所见,这样的写法遇到了中文不能触发keyup事件的问题。于是寻求解决方法,想起来baidu的搜索栏提示似乎是没有这个问题的,于是开始看百度的js。百度的js比较难看...方法命名净是一个字母,最后发现大概是使用了timeout做一个定时器来定时监测input框的修改。不是很满意这样的方法。于是继续查找看有没有更好的解决办法,于是就找到了oninput和onpropertychange两个事件。

oninput是firefox下面可用,而onpropertychange则是ie下可用。两个方法有着一些区别。

oninput只能检测到value这个属性的变化,而onpropertychange则可以检测到包含value的所有属性的变化。于是开始改成这个样子。

<html>
<head>
<script type="text/javascript" src="https://3water.com/static/js/jquery-1.4.2.min.js"></script>
</head>
<body>
  <p>
    使用oninput以及onpropertychange事件检测文本框内容:
  </p>
  <p>
    <input type="text" name="inputorp_i" id="inputorp_i" autocomplete="off"/>
    <span id="inputorp_s"></span>
    <script type="text/javascript">
      //先判断浏览器是不是万恶的IE,没办法,写的东西也有IE使用者
      var bind_name = 'input';
      if (navigator.userAgent.indexOf("MSIE") != -1){
        bind_name = 'propertychange';
      }
      $('#inputorp_i').bind(bind_name, function(){
        $('#inputorp_s').text($(this).val());
      })
    </script>
  </p>
</body>
</html>

问题这么被解决了。

Javascript 相关文章推荐
远离JS灾难css灾难之 js私有函数和css选择器作为容器
Dec 11 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
jquery中map函数遍历数组用法实例
May 18 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
Sep 23 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
微信小程序checkbox组件使用详解
Jan 31 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
解决echarts数据二次渲染不成功的问题
Jul 20 Javascript
js中将String转换为number以便比较
Jul 08 #Javascript
JS循环遍历JSON数据的方法
Jul 08 #Javascript
jquery获取选中的文本和值的方法
Jul 08 #Javascript
jQuery设置和获取HTML、文本和值示例
Jul 08 #Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 #Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 #Javascript
Javascript遍历table中的元素示例代码
Jul 08 #Javascript
You might like
解析PHP跨站刷票的实现代码
2013/06/18 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
web性能优化之javascript性能调优
2012/12/28 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
简单了解python的内存管理机制
2019/07/08 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
python批量修改xml属性的实现方式
2020/03/05 Python
python实现控制台输出彩色字体
2020/04/05 Python
python dict乱码如何解决
2020/06/07 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
教育专业自荐书范文
2013/12/17 职场文书
小学开学寄语
2014/01/19 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
实习护士自荐信
2015/03/25 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
Python 全局空间和局部空间
2022/04/06 Python