2012-06-05 37 views
40
document.getElementById(frmObj.id).value=""; 
document.getElementById(frmObj.id).autofocus; 
document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed"; 

在上面的代码中,表单对象的值完全设置为"",但文本框中没有光标。我想要一个光标在那里。 focus()只会关注该输入框,但不会真正设置光标。如何在javascript中设置光标到输入框?

+1

'document.getElementById(fieldID).focus();'应该将闪烁的光标放在表单字段中,除非您还有其他可以抓住页面焦点的东西。 .autofocus的声明现在不做任何操作 – mplungjan

+1

'.focus()'设置光标。这是焦点行动的全部含义。 –

+1

如果焦点不起作用,我会尝试点击() –

回答

54

上的JavaScript控制,比第一焦点选择显示在texbox光标控制...

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

,或者使用jQuery的

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

没有必要选择。他的代码还有其他事情正在发生。可能是一个嵌入式PDF或类似 – mplungjan

+0

我想光标应该在文本框中。我不应该点击文本框输入值。 –

+3

@downvoter:我不知道,你想要什么? – Talha

4

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

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

是的,这是有些过渡时正确的.focus()将不起作用,你将不得不使用$(“element”)[0] .select()来获得光标 –

+1

或el.setSelectionRange(el .value.length,el.value。长度);让光标在行尾。 – Vector

+0

注意:'setSelectionRange'不适用于'' – Vandesh

1

您没有提供了足够的代码,以帮助您 可能SUBM它的形式和重新加载页面,或者你在页面上有一个对象,就像一个嵌入式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> 
23

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

我经历了一个文本框的选择(通过JQuery的对焦方法),这显示了同样的问题,但没有采取光标英寸

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

+1

感谢您花时间写这篇文章!这正是我的问题 - 你可能为我节省了大量的时间。 – JoeRocc

+0

我试图让一个''元素可聚焦,这最终成为问题(很高兴我滚动通过了第一个接受的答案)。我还发现默认情况下有[html元素不可聚焦](http://stackoverflow.com/a/1600194/1052906)(似乎是浏览器特定的)。 ''元素就是Chrome(第57版)将注意力集中在开发者工具窗口的原因之一。 – larrylampco

+0

谢谢你救了我1小时:D –

2

如果您使用.onmousedown作为您的用户交互,可以咬你的事情之一是;当你这样做,然后立即尝试选择一个字段,它不会发生,因为鼠标正在被其他东西按住。因此,改变为.onmouseup和中提琴,现在focus()的作品,因为当尝试改变焦点时,鼠标处于未点击状态。

相关问题