Javascript 如何将光标位置设置为文本字段的初始位置?
我在一个div中有一个文本字段。在我的例子中,文本字段的宽度大于div的宽度。因此我对div使用了Javascript 如何将光标位置设置为文本字段的初始位置?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我在一个div中有一个文本字段。在我的例子中,文本字段的宽度大于div的宽度。因此我对div使用了overflow:hidden(现在无法修改UI)。我还有一个“清除”按钮,可以清除文本字段 现在我面临的问题是, 在文本字段中键入一个长字符串 现在单击“清除”按钮以清除文本 现在,当您再次键入某些内容时,您会发现第一个字符在UI中是隐藏的。但稍后按Home时,您将能够看到完整的文本。在Chrome中,它运行良好,我想,我在firefox中发现了这个问题 这是一个简单的例子 $('#but')。
overflow:hidden
(现在无法修改UI)。我还有一个“清除”按钮,可以清除文本字段
现在我面临的问题是,
Home
时,您将能够看到完整的文本。在Chrome中,它运行良好,我想,我在firefox中发现了这个问题$('#but')。在(“单击”,函数(){
$(“#fname”).val(“”);
});代码>
您可以在清除字段后设置焦点,然后光标将被设置到初始位置
试试这个:
$('#but').on("click", function() {
$("#fname").val("");
$("#fname").focus();
});
您的div具有150px和250px的输入,因此它将从输入中切断溢出,这就是为什么您会看到:
但是,当您在输入中键入更多字符时,浏览器将尽最大努力显示您正在键入的文本,并推动输入来执行此操作
通过执行$(“#fname”).val(“”)清除时代码>没有任何东西指示浏览器重新定位输入,因此浏览器保持输入的UI不变
因此,要完全重新测试它,您需要在溢出:隐藏的容器中重新定位输入
例如,将输入的宽度设置为小于容器的宽度,然后将其设置回原始值:
$('#but')。在(“单击”,函数(){
$(“#fname”).val(“”);
$(“#fname”).width(0);//将宽度设置为小于容器
//缓和
setTimeout(函数(){
$(“#fname”).width(250);//将宽度设置为原始值
}, 50);
});代码>
当您输入比输入长的文本,然后单击“清除”按钮时,输入不会重新定位。我想他也想将输入重新定位到原始状态。不工作。这与我解释的问题相同。现在试试,我增加了更长的重置时间:延迟10毫秒,而不是通常的0毫秒。我重新测试过,有时有效,50毫秒延迟时间100%