捕捉IE下鼠标右键paste事件
背景:IE8,jQuery
这次碰到的问题是,一个有边框的div套着一个起始宽度为30px的无边框文本输入框,随着用户的输入,输入框的长度也会随之改变。解决的办法是给输入框绑定事件,当用户输入事件触发时调用函数改变输入框的宽度。函数中判断输入框中内容是否和之前一样,如果一样则返回;不一样则改变宽度。
需要处理的情形:键盘输入,失去焦点,键盘粘贴,鼠标右键粘贴。
绑定的事件有:keyup,keydown,blur, update,change,input和paste。
这些事件能够基本保证在IE8,FF和Chrome下面对文本框宽度的控制。但是在IE8下,鼠标右键粘贴时会触发paste事件,但是在触发事件时输入框中内容还没有改变,所以函数会直接返回,不会改变输入框的宽度,之后输入框中的内容会被改变。但是在键盘粘贴时不会发生这种情况。
为了解决这个问题,我将绑定事件的回调函数改为一个function,在function中使用setTimeout调用改变输入框宽度的函数,延时为10ms,结果问题就解决了。
大致代码如下:
$('#inputBox').bind('paste', function (e) {
setTimeout(changeInputWidth, 10);
});
function changeInputWidth
() {
//code to judge content in input and change input width
}
http://stackoverflow.com/a/4623268/1682256