document.getElementById(frmObj.id).value="";
document.getElementById(frmObj.id).autofocus;
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed";
在上面的代码中,表单对象的值完全设置为""
,但文本框中没有光标。我想要一个光标在那里。 focus()
仅关注该输入框,但实际上并未设置光标。
答案 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}
/>