在项目的开发过程中,相信大家都处理过监听用户输入的事情,一般我们会用到onkeyup、onkeydown、onkeypress、onchange、oninput事件,虽然都很熟悉了,但是还是有必要巩固一下。

onkeyup  在当前元素上释放键盘按键时触发

onkeydown  当用户按下键盘是会触发

onkeypress  当用户在键盘上按下某个键(不是所有的键都会触发,比如ctrl)以后会触发(safari上测试,回退等键不会触发)

oninput  当input元素的value属性发现变化时触发,该事件是冒泡的,如果window对象支持该事件,input元素同样也支持。

为了方便大家测试,写了一个demo

在这里我还是想讲下事件处理的流程以及事件响应和事件监听,因为我经常搞混。

大家都知道事件处理有三个阶段,捕获阶段、目标阶段、冒泡阶段

事件捕获从上到下依次触发元素事件监听(如果支持该事件)-----直到目标元素结束(可见这种事件处理方式并不是我们想要的)

事件冒泡从目标元素开始触发事件监听,然后开始向上依次触发元素事件监听----直到最顶层结束(这是最合理的事件处理方式,大多数情况下都这样处理)

定义:
1.事件流描述的是从页面中接收事件的顺序,也可理解为事件在页面中传播的顺序。(事件处理顺序)
2.事件就是用户或浏览器自身执行的某种动作。诸如click(点击)、load(加载)、mouseover(鼠标悬停)。(我所说的事件响应)
3.事件处理程序响应某个事件的函数就叫事件处理程序(或事件侦听器)。(我所说的事件监听)

关于事件事件处理阶段写了一个demo,相信大家一看就懂了。

好了,下面进入正题,关于input事件在中文输入法时的表现。

~~搜索联想功能,大家应该都不陌生吧,不熟悉的可以去看看百度的搜索就知道了,实现的原理很简单。

监听搜索框的input事件,获取用户输入的内容传给后台------获取后台返回的结果并展示

如果是输入的纯英文很nice,没什么问题,但是输入中文呢。。

比如我想搜个“我的世界”,返回的第一个结果应该是“我”这个关键字返回的搜索结果对吧,但是并不是,返回“w”的搜索结果,原因想必大家都知道。

其实这个不是很大的问题,百度还不是这样的,跟后台勾搭一下,就这样样子吧,没啥影响,ok,搞定!

。。。。。

哈哈哈,上面只是开个玩笑,这个问题虽然不是那么重要,但是闲暇之余还是可以研究研究嘛。然后一阵google。

当当当。。。可以采用compositionstart和compositionend来捕获IME(input method editor)的启动和关闭事件。说实话,这两事件听都没听过,但是我们还是写个demo来试试吧。

$("#keyup,#keydown,#keypress,#change,#input").on("click",function(){
var oevent=this.id;
$("#oinput").off().on({
oevent:function(e){ },
compositionstart:function(){
$("#result").text("中文输入:开始")
},
compositionend:function(){
$("#result").text("中文输入:结束")
}
})
//alert(oevent)
})

demo在此

input事件以及中文输入法的处理的更多相关文章

  1. compositionEnd 和 input 事件(中文输入法问题)

    网上用 compositionstart + compositionend + input 解决中文输入法问题的办法 node.addEventListener('compositionstart', ...

  2. input 事件与汉字输入法:使用compositionend事件解决

    input 事件与汉字输入法:使用compositionend事件解决 在使用<input type="text">的input事件的时候 会遇到中文输入法的" ...

  3. 解决oninput事件在中文输入法下会取得拼音的值的问题

    在做搜索等功能时,很多时候我们需要实时获取用户输入的值,而常常会得到类似 w'm 这样的拼音.为了解决这个问题,我在网上搜索了下相关问题,发现了两个陌生的事件:compositionstart 和 c ...

  4. 解决扫码枪输入input时受中文输入法的影响

    <html><head> <meta content="text/html; charset=UTF-8" http-equiv="Cont ...

  5. 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题

    前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...

  6. input输入中文时,拼音在输入框内会触发input事件的问题。

    问题描述: 监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 需要完成的需求就是在输入阶段不触发input中的事件,选词之后文字落 ...

  7. input事件中文触发多次问题研究

    我们在网页中经常会遇到实时搜索的情况,或者其他类似需要input实时响应的问题,一般情况下,我们是利用input和propertychange事件来监听input内容的变化来响应,但是有一个问题就是当 ...

  8. JS对输入判断变化屏蔽中文输入法输入时连续触发事件的方法

    代码如下: //智能搜索提示 IntelligenceSearch: function IntelligenceSearch() { $('#keyWord').on('input', functio ...

  9. input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题

    监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 但是在很多情况下,只需要输入到输入框的中文字符. 解决办法: 通过查阅资料得知在 ...

随机推荐

  1. PHP MySQLi

    PHP MySQLi 简介 PHP MySQLi = PHP MySQL Improved! MySQLi 函数允许您访问 MySQL 数据库服务器. 注释:MySQLi 扩展被设计用于 MySQL ...

  2. angular 引入 component 报错

    每天抽出一些时间学习 Angular2 ,并准备把手头上的项目移植为 Angular2 , 不过今天又遇到了一些小问题. 准备写一个导航类适于管理后台常见的右边导航,如博客园的这种: ! 使用 g g ...

  3. 命令passwd报错因inode节点处理记录

    命令passwd报错因inode节点处理记录故障现象:1.修改密码时报错 passwd: Authentication token manipulation error2.添加用户报错:unable ...

  4. 超级列表框List Ctrl

    LVCFMT_CENTER居中对齐 LONG styles; CListCtrl *str=new CListCtrl; str->Create(LVS_ICON, CRect(,,,), ); ...

  5. MVC中修改报错

    修改的时候有空值传入.

  6. python 3.5 购物小程序

    #!/usr/bin/env python #encoding: utf-8 import time import os nowtime = time.strftime('%Y-%m-%d %H:%M ...

  7. hql 多表查询

    sql 单表/多表查询去除重复记录单表distinct多表group by select h from Hytxbz as h,Tgbzk as t where h.hytxbzid=t.hytxbz ...

  8. Swift—do-try-catch错误处理模式-备

    Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理. let contents = ...

  9. 转: pthread_detach()函数

    创建一个线程默认的状态是joinable. 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码). 所以创建线程者应该调 ...

  10. css3中的圆角属性

    圆角属性:border-radius <style type="text/css"> .content{ border: 1px solid green; width: ...