2017-04-04 145 views
1

当用户在特定字段上击中TAB时,我希望焦点跳转到另一个特定字段(并选择所有内容)。焦点并用javascript选择另一个输入文本字段?

我想避免使用tabindex。默认的顺序通常很好,我不能打扰手动管理它们。

我尝试使用onbluronkeyup事件,但所有事情都会导致扭曲的效果和错误。

例如,我想:

<input id="field1" onblur="document.getElementById('anotherField').focus();" type="text"> 

这几乎似乎工作,但没有选择目标字段中的文本。

然后我试图

<input id="field1" onblur="document.getElementById('anotherField').focus(); document.getElementById('anotherField').select();" type="text"> 

这几乎似乎工作,但随后的目标字段的文本将不会在进一步黏合得到未选择

+0

我建议你阅读[了'tabindex' attribut e](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex),因为你正在重新发明轮子。 – Tomalak

+0

我已经提到tabindex,以及我不想使用这种方法的原因。 – Zalumon

+1

*“我不能手动管理它们”*您可能会困扰编写内联“onblur”处理程序,但不管理标签顺序?奇怪。 – Tomalak

回答

2

尝试使用

function myTab(event, targetId) { 
 
    if (event.keyCode == 9) { 
 
     event.preventDefault(); 
 
     var target = document.getElementById(targetId); 
 
     target.focus(); 
 
     target.select(); 
 
    } 
 
}
<table> 
 
<tr> 
 
    <td><input type="text" id="field1" value="field1" onkeydown="myTab(event, 'field2');"> 
 
    <td><input type="text" id="field3" value="field3" onkeydown="myTab(event, 'field4');"> 
 
</tr> 
 
<tr> 
 
    <td><input type="text" id="field2" value="field2" onkeydown="myTab(event, 'field3');"> 
 
    <td><input type="text" id="field4" value="field4" onkeydown="myTab(event, 'field1');"> 
 
</tr> 
 
</table>

+1

OP不使用jQuery。 – Tomalak

+0

对不起,错过了 –

+0

我可以将其转换为正常的JavaScript,没问题。现在会测试。 – Zalumon

1

请使用下面的示例代码

<input type="text" name="t1" id="t1" placeholder="textbox1" onfocus="document.getElementById('t2').select()"/><br><br> 
 
<input type="text" name="t2" id="t2" placeholder="textbox2" value="abc"/><br><br> 
 
<input type="text" name="t2" id="t3" placeholder="textbox3"/><br><br>

+1

不知道我理解这个建议。它看起来会“跳过”t1。 “t2”也写两次。 – Zalumon

+0

它会跳转到第二个文本框并选择文本框的onfocus值1 – Dilip

+0

对我来说这没有意义,对不起。我仍然希望能够通过每个领域的标签。 – Zalumon

相关问题