【问题标题】:jQuery Virtual Keyboard - set Arrow LEFT and Arrow RightjQuery 虚拟键盘 - 设置左箭头和右箭头
【发布时间】:2013-10-21 09:50:00
【问题描述】:

我花时间创建了一个 jQuery 虚拟键盘,当焦点设置为输入时它会显示它。我几乎完成了从键盘到工作的所有按钮,但我坚持为按键制作功能:Arrow LeftArrow Right

请懂 jQuery 的人帮助我了解如何为左箭头和右箭头执行这些功能。不知何故,我知道需要在输入字段中识别光标的位置,并且需要以某种方式将其移动 +1 或 -1。

关于我的虚拟键盘的示例详情请看here


已解决:
我找到了正确的解决方案。 最终工作的SCRIPT is here

【问题讨论】:

  • 类似改变光标位置的东西?如果是的话,这个链接可以帮助你Click Here
  • 在输入框内左右移动光标
  • 或者你可以使用jquery Caret
  • 我认为它比设置光标位置更复杂。该函数需要找到当前光标位置在哪里,而不是用+1或-1字符改变位置。我知道插入符号可能会有所帮助。但是我没有足够的经验来理解如何制作我上面描述的功能。非常感谢您的努力!!!
  • 没错。这就是你所需要的。你可以使用他们的代码。看看他们是如何实现的。顺便说一句,你的键盘看起来不错;]

标签: jquery keyboard virtual arrow-keys


【解决方案1】:

这里是一个例子:

function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function setCaretToPos (input, pos) {
  setSelectionRange(input, pos, pos);
}

感谢:来自this post的CMS

编辑:

function getCaretPos(input) {
    // Internet Explorer Caret Position (TextArea)
    if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        var bookmark = range.getBookmark();
        var caret_pos = bookmark.charCodeAt(2) - 2;
    } else {
        // Firefox Caret Position (TextArea)
        if (input.setSelectionRange)
            var caret_pos = input.selectionStart;
    }

    return caret_pos;
}

来自this postPandincus 的致谢

jsFiddle

【讨论】:

  • 非常感谢你的帖子——我已经见过了。这个例子是如何设置光标出现在位置 4 ......但我需要一种方法来识别当前位置并将光标移动到其他位置......你的例子可能在第二部分很有用......当,我知道光标的位置,然后从当前位置更改为我想要的位置...
  • 查看我的更新人...如果我的回答对您有帮助,您可以接受:] 下次在 google 上进行一点搜索时,可以像我一样在 2 分钟内解决您的问题。
猜你喜欢
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多