中文输入法不触发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 相关文章推荐
在vs2010中调试javascript代码方法
Feb 11 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
javascript数据类型验证方法
Dec 31 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 jQuery
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 Javascript
Vue实现购物车基本功能
Nov 08 Javascript
JS 基本概念详细介绍
Oct 16 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
python 图片验证码代码
2008/12/07 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python3实现名片管理系统
2020/11/29 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
办公楼租房协议书范本
2014/11/25 职场文书
2015年春节标语口号
2014/12/09 职场文书
先进党员事迹材料
2014/12/24 职场文书
2015年国庆节寄语
2015/08/17 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript