中文输入法不触发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实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
JS获取浏览器版本及名称实现函数
Apr 02 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
JS实现点击事件统计的简单实例
Jul 10 Javascript
jQuery设计思想
Mar 07 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
bootstrap table sum总数量统计实现方法
Oct 29 Javascript
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
Dec 28 Javascript
VuePress 中如何增加用户登录功能
Nov 29 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对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php微信开发之图片回复功能
2018/06/14 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
Vue实现路由跳转和嵌套
2017/06/20 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
JS实现烟花爆炸效果
2020/03/10 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python AES加密模块用法分析
2017/05/22 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
python实现输入数字的连续加减方法
2018/06/22 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
python实现查找所有程序的安装信息
2020/02/18 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
酒店管理毕业生自荐信
2013/10/24 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
借款担保书范文
2014/05/13 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python