Я пытаюсь программно запустить ключевое событие для движения оставленный в текстовом поле, но не имею любую удачу.
Входной элемент фокусируется, и курсор в конце. Я пытаюсь заставить курсор перемещаться оставленный один шаг - перед буквой "F" *программно путем увольнения События клавиатуры (keydown/keyup/keypress) с соответствующим нажатием клавиши ← или →, предназначенный для поля ввода.
ABCDEF |
Вот код до сих пор:
HTML
JavaScript
var keyEvent = document.createEvent("KeyboardEvent");
var keyLocation = '0x00';
var keyIdentifier = "Left";
keyEvent.initKeyboardEvent("keypress",
true,
true,
window,
keyIdentifier,
keyLocation,
false);
$("a").dispatchEvent(keyEvent);
Сохраненный быстрая демонстрация на jsfiddle, если Вы хотите видеть целый код - http://jsfiddle.net/Vsafv/
Я не интересуюсь созданием этого перекрестного браузера (просто получают его работающий в Chrome).
e = jQuery.Event("keydown"); // define this once in global scope
e.which = 37; // Some key value
$("input").trigger(e);
где «ввод» - ваше текстовое поле
37 - слева
38 - вверх
39 - правый
40 - вниз
Таким образом, когда вы записываете свои «события», вы записываете значения для нажатых клавиш.
Я уверен, что вы уже нашли способ сделать это, но на всякий случай вот идея, как я бы с этим справился:
var keysPressed = new Array(); // somewhere in the global scope
$("input").keydown(function (e) {
keysPressed.push(e.which); //adding values to the end of array
});
Надеюсь, это поможет
И для тех, кто не рассматривает jQuery как решение всего:)
function setCaretPosition(elemId, caretPos) {
var elem = document.getElementById(elemId);
if(elem != null) {
if(elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if(elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
}
else
elem.focus();
}
}
}
Вы можете взглянуть на этот вопрос StackOverflow -> jQuery Установить положение курсора в текстовой области
Насколько я понимаю, вы можете сделать:
var pos = document.getElementById("a").length;
document.getElementById("a").setSelectionRange(pos-1, pos-1);