使用Jquery键启动后,关注下一个输入
注意:我的页面只有文本框。没有别的了。(无其他=>无其他输入类型) 如何在向上键后将焦点跳转到下一个输入元素 在萨夫拉兹回答之后:-使用Jquery键启动后,关注下一个输入,jquery,focus,onkeyup,Jquery,Focus,Onkeyup,注意:我的页面只有文本框。没有别的了。(无其他=>无其他输入类型) 如何在向上键后将焦点跳转到下一个输入元素 在萨夫拉兹回答之后:- <div> <input type="text" maxlength="1" size="1" > <input type="text" maxlength="1" size="1" > <input type="text" maxlength="1" size="1" > // sarfraj
<div>
<input type="text" maxlength="1" size="1" >
<input type="text" maxlength="1" size="1" >
<input type="text" maxlength="1" size="1" > // sarfraj -- here it crash Please check below for error.
</div>
<div>
<input type="text" maxlength="1" size="1" >
<input type="text" maxlength="1" size="1" >
<input type="text" maxlength="1" size="1" >
</div>
更新:
以下是您应该如何修改代码:
$(":input[type='text']").keyup(function(event){
if(valid) {
if ($(this).next('[type="text"]').length > 0){
$(this).next('[type="text"]')[0].focus();
}
else{
if ($(this).parent().next().find('[type="text"]').length > 0){
$(this).parent().next().find('[type="text"]')[0].focus();
}
else {
alert('no more text input found !');
}
}
}
});
如何在向上键后将焦点跳转到下一个输入元素 将
next()
与焦点一起使用:
$(this).next('[type="text"]')[0].focus();
因此,您的代码应该是这样的:
$(":input[type='text']").keyup(function(event){
if(valid) {
$(this).next('[type="text"]')[0].focus();
}
});
html属性用于定义在点击tab键时在输入元素中移动的顺序。我将从设置这个开始
因此,设置选项卡索引(以扩展示例):
基本上获取当前元素的tabindex
,添加1,并获取具有该选项卡索引的元素。您可以直接使用jQuery的next()
,而不是计算tabindex:)毫无疑问,但我的想法与您的不同。在这一点上,我假设无论出于何种原因,他可能需要一个特定的迭代顺序。顺便说一句,作为巴基斯坦同胞(我知道我的个人资料上写着AU,但我现在在KHI[即将搬家]),如果你有邀请,我会非常感激。@Ali:我不确定是否有邀请选项,我登录了,但没有找到任何邀请选项。@Sarfarz,别担心,他们说是通过邀请其他成员或查看你的个人资料。显然,我的stackoverflow分数、github公共项目和linkedIn没有达到stackoverflow标准。@Ali:让我完成我的个人资料,然后看看我是否获得邀请特权。嘿,伙计。。我用的是同样的代码。但是如果输入元素是该div中的最后一个元素,它就会崩溃。请让我编辑我的问题以获得更好的解释。。问题是next()
会在兄弟姐妹之间迭代,一旦兄弟姐妹用完,就完成了。看到您的标记,您的选项将被删除。(a) 迭代所有input
元素,直到找到下一个(b)使用我的代码(我还没有测试,但应该可以用)。我不介意这个答案,但是它不可靠,因为它非常特定于网站的布局,如果结构发生变化(比如说你做了一个新主题或其他事情),它会破坏代码。@Ali:我同意,假设这里的标记保持不变。你的答案也很好。Mohit做出了选择:-)我天生是一名软件开发人员,我的大部分前端任务都需要OOP风格的编码,因此可重用性和功能与布局的分离非常重要。即使您不需要进行OOP风格的编程,您也应该将功能与表示层分离(这只是一个很好的实践)。
$(this).next('[type="text"]')[0].focus();
$(":input[type='text']").keyup(function(event){
if(valid) {
$(this).next('[type="text"]')[0].focus();
}
});
$(":input[type='text']").keyup(function(event){
if(valid)
{
var currentIndex = $(this).attr("tabindex");
var nextIndex = parseInt(currentIndex)+1;
$("input[tabindex='"+nextIndex+"']").focus();
}
});