首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jquery在右箭头键上向右移动输入

使用jquery在右箭头键上向右移动输入
EN

Stack Overflow用户
提问于 2011-09-27 04:18:30
回答 2查看 573关注 0票数 1

我有这样的代码:

代码语言:javascript
运行
复制
jQuery.fn.enterText = function(e){
var $cursor = $("#cursor");

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

};

我正在尝试将#光标向右移动,但浏览器似乎不允许it....the向左箭头键工作:

代码语言:javascript
运行
复制
if (e.keyCode == 37){
    $cursor.val("");
var previousChar =  $cursor.prev();
    $cursor.after(previousChar);

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-27 04:41:39

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

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

代码语言:javascript
运行
复制
if (e.keyCode == 39) {
    $cursor.val("");
    var nextChar = $cursor.next();
    $cursor.before(nextChar);
}

您正在尝试添加光标之后的元素,光标之后...它已经存在了。

票数 0
EN

Stack Overflow用户

发布于 2011-09-27 04:40:09

左箭头键起作用是因为您使用的是after(),所以您实际上是在移动光标元素后面的前一个字符。

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

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7560815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档