使用js复合事件处理中文输入的问题

JavaScript09

使用js复合事件处理中文输入的问题,第1张

复合事件和文本事件在很对地方很相似。在触发复合事件时。目标是接收文本的输入字段。但是它比文本事件对象多一个属性 data ,复合事件有以下三种:

复合事件主要的用处在于使用输入法编辑器时,往往需要使用多个键,但是最终只输入一个字符。复合事件就是为了检测和输入这种输入而设计的。例如:当我们需要在输入框中输入中文“张”的时候,需要输入 zhang 最后按回车键输入到输入框中。

当我们使用input事件时,输入中文拼音的过程中此时,此时中文并未显示在输入框中,但是依然会触发input事件

改为compositionend事件后

一、设计思路:设计一个简单的输入对话框,然后按下enter进行输入事件。

二、聊天输入框的代码如下:

三、此时的页面展示如下:

四:设计函数,使得输入文字时,按下按钮可以提交到聊天框。

五、此时在页面上测试,输入一段文字:

六、执行结果如下:

七、设计函数,使得按下enter跟按钮同样的功能:

八、刷新页面,测试:

主动触发事件是一个经常会用到的技巧,它很重要。它和事件绑定一样存在着浏览器兼容性问题。传统浏览器(IE8-)使用createEventObject来创建事件对象,用fireEvent这个方法来触发事件;现代浏览器用createEvent来创建对象,用dspatchEvent来触发事件。

//获取浏览器版本

var isIE=navigator.userAgent.match(/MSIE (d)/i)

isIE=isIE?isIE[1]:undefined

//事件函数

function onclick(e){

e=eevent

alert(e.msg表酱紫啦,人家羞涩啦~)

}

//给document绑定一个点击事件

isIElt9

//传统浏览器使用attachEvent

?document.attachEvent(onclick,onclick)

//现代浏览器使用addEventListner

:document.addEventListener(click,onclick,false)

//触发自定义事件

if(isIElt9){

//传统浏览器

//创建对象

var event=document.createEventObject()

//给事件对象添加属性

event.msg=我是fireEvent触发的

//触发事件

document.fireEvent(onclick,event)

}else{

//现代浏览器

//创建事件对象

var e=document.createEvent(MouseEvents)

//初始化事件对象

e.initMouseEvent(click),

//给事件对象添加属性

e.msg=我是despatchEvent触发的

//触发事件

document.dispatchEvent(e)

}