如何在javascript中将光标设置为输入框?

yuk*_*mra 59 javascript dom-events

document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,表单对象的值完全设置为""但文本框中没有光标.我想要一个光标在那里.focus()仅关注该输入框但实际上并未设置光标.

Tal*_*lha 82

JavaScript中首先关注控件然后选择控件以在texbox上显示光标...

document.getElementById(frmObj.id).focus();
document.getElementById(frmObj.id).select();
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery

$("#textboxID").focus();
Run Code Online (Sandbox Code Playgroud)

  • 没有必要选择.他的代码还有其他的东西.可能是嵌入式PDF或类似内容 (8认同)

Ori*_*nis 41

我意识到这是一个相当古老的问题,但我对类似的问题有一个'愚蠢'的解决方案,可能对某人有帮助.

我在文本框中遇到了同样的问题,显示为选中(通过JQuery中的Focus方法),但没有将光标放入.

事实是我打开了Debugger窗口,看看发生了什么,那个窗口正在窃取焦点.解决方案非常简单:只需关闭调试器,一切都很好......测试花了1个小时!

  • 感谢您抽出宝贵的时间写这篇文章!这正是我的问题-您可能为我节省了很多时间。 (2认同)

Ale*_*lov 6

有时您会获得焦点,但文本字段中没有光标。在这种情况下,您可以这样做:

document.getElementById(frmObj.id).select();
Run Code Online (Sandbox Code Playgroud)

  • 或 el.setSelectionRange(el.value.length, el.value.length); 使光标位于行尾。 (2认同)

fyn*_*yrz 6

可能会困扰您的事情之一是,如果您将.onmousedown其用作用户交互;当您这样做时,然后立即尝试选择一个字段,这种情况不会发生,因为鼠标被按住在其他东西上。因此,更改为.onmouseupviola,现在focus()可以工作,因为当尝试更改焦点时,鼠标处于未单击状态。


小智 5

这种方式将焦点和光标设置到输入的末尾:

div.getElementsByTagName("input")[0].focus();
div.getElementsByTagName("input")[0].setSelectionRange(div.getElementsByTagName("input")[0].value.length,div.getElementsByTagName("input")[0].value.length,"forward");
Run Code Online (Sandbox Code Playgroud)