中文输入法不触发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 相关文章推荐
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
js 验证密码强弱的小例子
Mar 21 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
javascript中arguments,callee,caller详解
Mar 16 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 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
2021年最新CPU天梯图
2021/03/04 数码科技
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
python分布式编程实现过程解析
2019/11/08 Python
使用K.function()调试keras操作
2020/06/17 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
自荐信如何制作?
2014/02/21 职场文书
大学班级计划书
2014/04/29 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
文明班级申报材料
2014/12/24 职场文书
2015教师年度考核评语
2015/03/25 职场文书
生产设备维护保养制度
2015/08/06 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript