【问题标题】:jquery,javascript: change input value on keyup - keep cursor position at the end butjquery,javascript:更改 keyup 上的输入值 - 将光标位置保持在末尾,但
【发布时间】:2011-01-16 08:23:40
【问题描述】:

大家好, 我遇到了一个恼人的错误,在我的情况下,它对用户并不友好。

用户可以使用向上和向下箭头键设置输入字段的值。 焦点始终设置在输入字段上,因此用户可以在使用箭头键选择值后进行输入。

我希望光标位置始终保留在输入值的最后一个字符处,以便用户可以在通过箭头键选择值后立即键入。如果您按向下箭头键,那效果很好,因为在这种情况下,光标会自动跳到输入框的末尾。

如果您按向上键,情况正好相反——光标跳到开头。 我可以用我在 stackoverflow 上找到的“setCursorPosition”脚本来解决这个问题。

但是,尽管它正在工作,但用户无法真正“感受和看到”它。如果我按向上箭头键,光标仍显示在输入值的开头。一旦我开始输入,光标就会跳到最后,它工作正常。

在这里查看:http://jsfiddle.net/3UHVY/1/

所以我想知道您是否有解决方案,以便当我点击向上或向下箭头键时光标可能始终保留在输入框的末尾,并且它对用户也是可见的和逻辑的。现在用户可能认为他必须抓住鼠标并直接跳回输入框才能将光标设置到末尾。

【问题讨论】:

  • 您正在重写默认文本框行为以增强用户体验?我怀疑这是否有意义,因为用户期望不同的行为。
  • 这也让我很恼火,因为当我点击向下按钮时,Opera 会自动给我一个不相关内容的下拉列表...
  • @j3frea 你也许可以用 autocomplete="off" 来阻止这种行为
  • 自动完成对我来说是一个有用的功能。所以你需要为输入框关闭它,而不是我。我和卡斯帕在这里。

标签: javascript jquery cursor position


【解决方案1】:

您可以通过在按键时返回 false 来抑制浏览器的默认按键行为:

if(e.keyCode === 38)
    return false;

http://jsfiddle.net/3UHVY/5/

或者,如果这不能满足您的需求,您可以挂钩 keyUp 事件并将光标移动到输入的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2013-07-20
    • 2011-11-08
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多