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”一起工作。是吗?;)