我正在尝试强制输入键作为Tab键。
我正在关注这个jsFiddle Click here for JSFiddle
这是我的html。
<form name='form' method='post'>
<div class='row'>
<div class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>First Name:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtfname' class='input-enter form-control'/>
</div>
</div>
<div id='div_name' class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>Last Name:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtlname' class='input-enter form-control'/>
</div>
</div>
</div>
</form>
这是我的jquery代码。 Jquery版本3.1.1。
$('input').keypress(function(e) {
if (e.which == 13) {
// $(this).next('input').focus();
// $(this).parent().next().find('.input-enter').focus();
$(this).closest('.input-enter').find('input').focus();
e.preventDefault();
alert("Enter key has been pressed!");
}
});
更新:当我按下Enter键时会弹出警告框。 第二次更新。
完整的HTML代码。不要担心id是多重的。我复制并粘贴了。
<form name='form' method='post'>
<div class='row'>
<div class='col-md-6'>
<div class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>First Name:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtfname' class='input-enter form-control'/>
</div>
</div>
<div id='div_name' class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>L:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtlname' class='input-enter form-control'/>
</div>
</div>
</div>
<div class='col-md-6'>
<div class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>First Name:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtfname' class='input-enter form-control'/>
</div>
</div>
<div id='div_name' class='form-group row'>
<label class='col-sm-4 control-label text-primary' for='nickname'>L:</label>
<div class='col-sm-8'>
<input id='nickname' type='text' name='txtlname' class='input-enter form-control'/>
</div>
</div>
</div>
</div>
</form>
答案 0 :(得分:0)
尝试更改
$(this).closest('.input-enter').find('input').focus();
到
$(this).closest('.row').nextAll(':has(.input-enter):first').find('.input-enter').focus();
另外你应该修改你的输入id属性,因为它的double('nickname'被使用了两次,这是无效的)。现在'enter'就像'tab'一样 - 这是FIDDLE
问题更新
使用此代码:
$('input').keypress(function(e) {
if (e.which == 13) {
let focusable = $('form').find('input')
let next = focusable.eq(focusable.index(this)+1);
if (next.length) {
next.focus();
} else {
// form.submit();
}
return false;
e.preventDefault();
}
});
这是FIDDLE。