我有这段代码:
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);
}
答案 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
而不是之后:
if (e.keyCode == 39) {
$cursor.val("");
var nextChar = $cursor.next();
$cursor.before(nextChar);
}
你正试图在光标之后添加光标后面的元素......它已经存在了。