Программно нажмите, "Left" вводят ввод текста

Я пытаюсь программно запустить ключевое событие для движения оставленный в текстовом поле, но не имею любую удачу.

Входной элемент фокусируется, и курсор в конце. Я пытаюсь заставить курсор перемещаться оставленный один шаг - перед буквой "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).

7
задан Brian Tompsett - 汤莱恩 18 October 2019 в 16:44
поделиться

4 ответа

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
});

Надеюсь, это поможет

10
ответ дан 6 December 2019 в 09:18
поделиться

И для тех, кто не рассматривает jQuery как решение всего:)

Из http://blog.josh420.com/archives/2007/10/setting-cursor-position- in-a-textbox-or-textarea-with-javascript.aspx

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();
        }
    }
}
8
ответ дан 6 December 2019 в 09:18
поделиться

Вы можете взглянуть на этот вопрос StackOverflow -> jQuery Установить положение курсора в текстовой области

1
ответ дан 6 December 2019 в 09:18
поделиться

Насколько я понимаю, вы можете сделать:

var pos = document.getElementById("a").length; 
document.getElementById("a").setSelectionRange(pos-1, pos-1);
1
ответ дан 6 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: