我需要你的帮助,因为我没有想法
我有以下HTML5代码
<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>
以及以下javascript函数
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
document.getElementById(inputId).focus();
}
}
加载页面时,第一个&lt;输入&gt;得到焦点。 我想检查用户是否只输入号码,所以&#34; onblur&#34;我调用函数,检查内容。 如果它不是数字,我删除该值,并尝试将焦点返回到&lt;输入&gt;
它不起作用!
无法回馈焦点,第二个输入有它,它永远不会回到第一个 我没有在Javascript控制台中看到任何错误,并且其余的脚本运行良好。 即使给出真实的身份证(&#34; Q1&#34;)也不起作用......
然而,在该功能之外,将重点放在另一个&lt;输入&gt;很好地工作
有什么想法吗?
提前感谢您的帮助
ericc
答案 0 :(得分:2)
请见http://jsbin.com/bapuyanuvula/1/
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
setTimeout(function() {
document.getElementById(inputId).focus();
}, 0)
}
}
用户离开时会发生onblur事件。在某些浏览器中,可以取消此事件(即:event.preventDefault())。所以你无法集中注意力,因为此时它仍然是关注的焦点。因此,要么阻止模糊事件,要么使用上面提供的setTimeout ......
答案 1 :(得分:1)
这是与浏览器相关的问题,请尝试此操作
function updateQ(ident) {
var valeur = ident.value;
var inputId = ident.id.toString();
if (isNaN(valeur)) {
ident.value = "";
setTimeout(function(){
document.getElementById(inputId).focus();
},
0);
}
}
答案 2 :(得分:-1)
这是因为你传递了错误的引用。 改变这个:
onblur="updateQ(Q1)"
到此:
onblur="updateQ(this)"