Javascript 无法对输入进行聚焦
我需要你的帮助,因为我不知道 我有以下HTML5代码Javascript 无法对输入进行聚焦,javascript,html,Javascript,Html,我需要你的帮助,因为我不知道 我有以下HTML5代码 <form> <table class="main"> <tr> <td>Volume</td> <td><input type="text" id="Q1" onblur="updateQ(Q1)" autofocus /></td>
<form>
<table class="main">
<tr>
<td>Volume</td>
<td><input type="text" id="Q1" onblur="updateQ(Q1)" autofocus /></td>
<td>ml </td>
<td><input type="text" id="Q2" onblur="updateQ(Q2)" /></td>
<td>ml </td>
<td><input type="text" id="Qt" onblur="updateQ(Qt)" /></td>
<td>ml </td>
</tr>
</table>
</form>
加载页面时,第一个获得焦点。
我想检查用户是否只输入了数字,所以我调用了“onblur”函数来检查内容。
如果它不是一个数字,我移除该值,并尝试将焦点返回到
它不起作用
不可能返回焦点,第二个输入有它,它永远不会返回到第一个
我在Javascript控制台中没有看到任何错误,脚本的其余部分工作得很好。
即使给出真实的id(“Q1”)也不起作用
然而,在函数之外,将焦点交给另一个会很好地工作
有什么想法吗
提前谢谢你的帮助
ericc这是因为您传递了错误的引用。 更改此项:
onblur="updateQ(Q1)"
为此:
onblur="updateQ(this)"
请看这里
onblur事件在用户离开时发生。在某些浏览器中,可以取消此事件(即:event.preventDefault())。所以你不能聚焦它,因为此时它仍然聚焦。因此,您可以防止模糊事件或使用上面提供的设置超时…这是与浏览器相关的问题,请尝试以下操作
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
setTimeout(function(){
document.getElementById(inputId).focus();
},
0);
}
}
我猜参数ident只是一个字符串。据我所知,您无法获取字符串的.value和.id。编辑:使用Matteo Tassinaris解决方案!请您创建一个或等效的重新创建问题,好吗?另外,您使用的是哪种浏览器?看起来不错:不管怎样,都看不出问题出在哪里,清除输入和窃取焦点会造成非常糟糕的用户体验。而是考虑将某种错误样式应用到适当的消息中,防止表单被提交,直到事情被修复为止;如果得到支持,HTML5验证将为您解决这一问题。但是,如果您觉得必须强制更改用户的焦点,仍然不能清除文本框。也许可以进行更好的练习,但它们是等效的。您能解释为什么这会改变任何事情吗?这很有效!!完美的Firefox的一个问题是:-(我从两天开始关注这个问题,非常感谢
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
setTimeout(function() {
document.getElementById(inputId).focus();
}, 0)
}
}
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
setTimeout(function(){
document.getElementById(inputId).focus();
},
0);
}
}