中文输入法不触发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中变量相关的细节分析
Aug 13 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
javascript模拟post提交隐藏地址栏的参数
Sep 03 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
JavaScript中的some()方法使用详解
Jun 09 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
vue3实现v-model原理详解
Oct 09 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
jquery实现烟花效果(面向对象)
Mar 10 jQuery
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
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生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
python队列原理及实现方法示例
2019/11/27 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
打架检讨书100字
2014/01/08 职场文书
旅游网创业计划书
2014/01/31 职场文书
女子职高个人自荐书
2014/02/01 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
2015年质检工作总结
2015/05/04 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
win7配置本地ftp服务器的图文教程
2022/08/05 Servers