使用jquery向右箭头键向右发送移动输入

时间:2011-09-26 20:18:30

标签: jquery

我有这段代码:

jQuery.fn.enterText = function(e){
var $cursor = $("#cursor");

if (e.keyCode == 39){
    e.preventDefault();
    $cursor.val("");
var nextChar =  $cursor.next();
    $cursor.after(nextChar);
}

};

我试图将#cursor向右移动,但似乎浏览器不允许它......左箭头键有效:

if (e.keyCode == 37){
    $cursor.val("");
var previousChar =  $cursor.prev();
    $cursor.after(previousChar);

}

2 个答案:

答案 0 :(得分:0)

左箭头键有效,因为您正在使用after(),因此您实际上移动了光标元素之后的前一个字符。

我建议使用insertBefore()insertAfter()来移动光标元素,这样你的意图就更清晰了:

if (e.keyCode == 39) {
    e.preventDefault();
    $cursor.val("");
    var nextChar = $cursor.next();
    $cursor.insertAfter(nextChar);
}

if (e.keyCode == 37) {
    e.preventDefault();
    $cursor.val("");
    var previousChar = $cursor.prev();
    $cursor.insertBefore(previousChar);
}

答案 1 :(得分:0)

您应该使用before而不是之后:

http://jsfiddle.net/Gq5HZ/1/

if (e.keyCode == 39) {
    $cursor.val("");
    var nextChar = $cursor.next();
    $cursor.before(nextChar);
}

你正试图在光标之后添加光标后面的元素......它已经存在了。