我有一个输入字段列表,当我选中它们时,我想循环回到第一个,但它似乎不起作用。
这是我的HTML
<form id="form">
<input id="mon" type="text"/> Month<br>
<input id="day" type="text"/> Day<br>
<input id="num" type="text"/> Year<br>
<input id="amt" type="text"/> Amount<br>
</form>
和我的javascript
window.onload=function(){
$('mon').focus();
$('amt').onblur=function(){
//Process the input fields
$('mon').focus();
}
}
function $(a){return document.getElementById(a)}
答案 0 :(得分:1)
我认为你的onblur
事件处理程序在默认处理程序之前被调用,导致焦点首先转移到输入'mon',然后转移到浏览器认为应该关注的任何焦点。尝试使用onkeypress
事件。 e.g。
window.onload=function(){
$('mon').focus();
$('amt').onkeydown = function(e) {
//check for IE weirdness
if (e === undefined && event !== undefined)
e = event;
if (e.keyCode == 9) {
$('mon').focus();
return false;
}
}
}
function $(a){return document.getElementById(a)}
编辑:onkeydown
实际上似乎适用于更多浏览器
编辑2:添加IE案例。 IE并不总是将事件作为参数传递
答案 1 :(得分:0)
要使光标出现在第一个输入框中,您需要将输入框的值分配给自身(hack)。您还需要“返回false”来停止事件传播。修改后的模糊功能如下,
<input id="mon" type="text" onfocus="this.value=this.value;" />
$('amt').onblur = function(){ $('mon').focus(); return false; }
答案 2 :(得分:0)
看看这个小提琴。我想这就是你想要实现的目标。 http://jsfiddle.net/CucuIonel/7Fpu3/7/