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

时间:2012-06-05 09:17:28

标签: javascript javascript-events

document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";

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

8 个答案:

答案 0 :(得分:71)

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

document.getElementById(frmObj.id).focus();
document.getElementById(frmObj.id).select();

或使用 jQuery

$("#textboxID").focus();

答案 1 :(得分:35)

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

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

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

答案 2 :(得分:4)

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

document.getElementById(frmObj.id).select();

答案 3 :(得分:2)

如果您使用.onmousedown作为用户互动,可能会让您感到困惑的一件事情;当你这样做,然后立即尝试选择一个字段时,它就不会发生,因为鼠标正在按下其他东西。因此,更改为.onmouseup和中提琴,现在focus()有效,因为当尝试更改焦点时鼠标处于未单击状态。

答案 4 :(得分:1)

您没有提供足够的代码来提供帮助 您可能会提交表单并重新加载页面,或者您在页面上有一个对象,就像嵌入式PDF一样,会破坏焦点。

这是验证表单的规范普通javascript方法 可以使用onubtrusive JS来改进它,这将删除内联脚本,但这是起点DEMO

function validate(formObj) {
  document.getElementById("errorMsg").innerHTML = "";    
  var quantity = formObj.quantity;
  if (isNaN(quantity)) {
    quantity.value="";
    quantity.focus();
    document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
    return false;
  }
  return true; // allow submit
}   

这是HTML

<form onsubmit="return validate(this)">
    <input type="text" name="quantity" value="" />
    <input type="submit" />
</form>    
<span id="errorMsg"></span>

答案 5 :(得分:0)

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

city

答案 6 :(得分:0)

以我的经验

document.getElementById(frmObj.id).focus();

在PC上运行的浏览器上很好。 但是在移动设备上,如果希望键盘显示出来以便用户直接输入,则还需要:

document.getElementById(frmObj.id).select();

答案 7 :(得分:0)

在输入代码中,您可以为使用jsx / react的任何人添加autoFocus = {true}。

<input
 type="email"
 name="email"
 onChange={e => setEmail(e.target.value)}
 value={email}
 placeholder={"Email..."}
 autoFocus={true}
/>