中文输入法不触发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函数、方法、对象代码
Oct 29 Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
Feb 26 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
在Vuex中Mutations修改状态操作
Jul 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
python监控进程脚本
2018/04/12 Python
python线程池threadpool使用篇
2018/04/27 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
演讲比赛获奖感言
2014/02/02 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
刑事和解协议书范本
2014/11/19 职场文书
质检员岗位职责
2015/02/03 职场文书
公司捐书倡议书
2015/04/27 职场文书
检讨书怎么写
2015/05/07 职场文书
2015年路政工作总结
2015/05/22 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书