【发布时间】:2011-06-01 10:11:35
【问题描述】:
我正在做一个最小的例子http://jsfiddle.net/PSYCKIC/SQZVH/1/
不能不让它工作,但这个想法是模拟键盘事件作为适用于每个浏览器(Firefox、Safari、Chrome、IE)的 keypress、keydown 或 keyup。
不知道为什么代码不工作,任何想法我该怎么做?
【问题讨论】:
标签: jquery events triggers keyboard
我正在做一个最小的例子http://jsfiddle.net/PSYCKIC/SQZVH/1/
不能不让它工作,但这个想法是模拟键盘事件作为适用于每个浏览器(Firefox、Safari、Chrome、IE)的 keypress、keydown 或 keyup。
不知道为什么代码不工作,任何想法我该怎么做?
【问题讨论】:
标签: jquery events triggers keyboard
这是目前适用于 Chrome 和 Firefox 的解决方案,仍然需要检查 Opera 和 IE 是否有效
// put cursor and input text in correct position
function setCaretPosition(elem, caretPos) {
if (elem != null) {
if (elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if (elem.selectionStart) {
elem.setSelectionRange(caretPos, caretPos);
elem.focus();
// Workaround for FireFox overflow no scroll problem
if ($.browser.mozilla) {
// Trigger a "space" keypress.
var evt = document.createEvent("KeyboardEvent");
evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 0, 32);
elem.dispatchEvent(evt);
}
// for webkit
if ($.browser.webkit || $.browser.msie) {
var te = document.createEvent('TextEvent');
// Trigger a "space" keypress.
te.initTextEvent('textInput', true, true, window, ' ');
elem.dispatchEvent(te);
}
}
else
elem.focus();
}
}
}
【讨论】:
$("#test").trigger(event.type);
【讨论】: