Javascript TextInput光标在重新聚焦时自动移到前面

Javascript TextInput光标在重新聚焦时自动移到前面,javascript,jquery,Javascript,Jquery,我有一种非常奇怪的行为 以下是我的代码的简化版本: DOWN = 40; UP = 38; $(document).on("keydown", "#text_input", function(e) { if (e.keyCode == DOWN) { $("#list").focus(); } }); $(document).on("keydown", "#list", function(e) { if (e.keyCode == UP) {

我有一种非常奇怪的行为

以下是我的代码的简化版本:

DOWN = 40;
UP = 38;

$(document).on("keydown", "#text_input", function(e) {
    if (e.keyCode == DOWN) {
        $("#list").focus();
    }
});

$(document).on("keydown", "#list", function(e) {
    if (e.keyCode == UP) {
        $("#text_input").focus();
    }
});
因此,基本上,如果用户在“#text#u input”具有焦点时按下键,焦点将转移到“#list”。 反过来,当用户将焦点放在“#列表”上,然后按向上键时,“文本输入”将恢复焦点

这很好,除了“#text_input”中的光标在恢复焦点时自动移动到文本值的前面。我想防止这种情况发生,这样用户就可以在将焦点切换到“#列表”之前继续从停止的位置键入内容

我在Stackoverflow上搜索,以找到将光标移动到文本输入末尾的方法,并找到以下解决方案:

$(document).on("focus", "#text_input", function() {

    value = $("#text_input").val();
    $("#text_input").val("");
    $("#text_input").val(value);

});
实际上,只有当我使用鼠标事件切换焦点时,才会将光标移到末尾。例如,当我点击页面的空白部分,然后重写“{文本输入”时,光标确实移到了输入的末端。

然而,奇怪的是,当我使用我的功能(即先按向下键,然后按向上键)重新获得焦点时,这不起作用。光标仍会移动到文本字段的前面

很抱歉把问题弄糊涂了,,但这是我能做的最好的了:((

有人知道为什么会发生这种情况以及任何可能的解决方案吗

谢谢


PS

刚刚将其添加到JSFIDLE中


您就快到了。请将代码更改为:

$(document).on("focus", "#text_input", function() {

    value = $("#text_input").val();
    $("#text_input").val("");
    setTimeout(function(){
       $("#text_input").val(value);
    }, 0);

});

如果这不能解决问题,我想在JSFIDLE上看到它。

你的意思是文本被选中了吗?@Italy-hmm…我猜?我的意思是当文本字段高亮显示时。换句话说,当用户关注文本字段以便他可以输入时。请将你的问题上传到@Italy,当然,等一下!不要忘记添加到JSFIDLE的链接o你的问题也许写起来更简单:
$(“#text_input”).val(“”).delay(1).val(value)
。使用
$(“#text_input”).focus(等)
delay用于动画。我听说它与“val”一起工作。是吗?;)