javascript – 按下输入时如何将焦点移动到下一个字段?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 按下输入时如何将焦点移动到下一个字段?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2763字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 按下输入时如何将焦点移动到下一个字段?](/upload/InfoBanner/zyjiaocheng/701/783191e0e7a34972b3febe6156c3e36b.jpg)
你可以告诉我当按下回车键时如何将焦点转移到下一个字段?我使用dform插件(将JSON转换为表单).
我用Google搜索,但这不起作用.为什么我的重点不转移到下一个领域?
JSFiddle:http://jsfiddle.net/5WkVW/1/
$(document).keypress(function(e) {
if(e.which == 13) {
// Do something here if the popup is open
alert("dd")
var index = $('.ui-dform-text').index(this) + 1;
$('.ui-dform-text').eq(index).focus();
}
});
*注意(来自评论):它还需要处理没有设置tabindex值的页面
解决方法:
它失败,因为这是您的代码中的文档.
您想要使用当前焦点项目的索引(document.activeElement),或者如果您使用委派事件,则可以确保这是当前项目.
无论是否有tabindex,最终版本都有效.它也包裹着:
JSFiddle 1:http://jsfiddle.net/TrueBlueAussie/5WkVW/11/
JSFiddle 2:http://jsfiddle.net/TrueBlueAussie/5WkVW/12/
他们都使用我添加的自定义jQuery选择器:focusable来选择所有可聚焦元素(包括链接):
// register jQuery extension
jQuery.extend(jQuery.expr[':'], {
focusable: function (el, index, selector) {
return $(el).is('a, button, :input, [tabindex]');
}
});
$(document).on('keypress', 'input,select', function (e) {
if (e.which == 13) {
e.preventDefault();
// Get all focusable elements on the page
var $canfocus = $(':focusable');
var index = $canfocus.index(this) + 1;
if (index >= $canfocus.length) index = 0;
$canfocus.eq(index).focus();
}
});
如果您愿意,可以在事件处理程序中使用相同的自定义选择器.然后它甚至可以在锚链接上工作(如果你将事件更改为keydown而不是keypress):
例如
$(document).on('keydown', ':focusable', function (e) {
链接示例:http://jsfiddle.net/5WkVW/15/
这也使用了委托,监听文档上的keydown事件.然后它应用jQuery选择器,然后将该函数应用于导致该事件的任何匹配元素.这样效率更高,因为它仅在事件时应用选择器(而不是将多个事件处理程序应用于每个DOM匹配元素).
旧版本如下:
JSFiddle:http://jsfiddle.net/TrueBlueAussie/5WkVW/3/
$(document).keypress(function(e) {
if(e.which == 13) {
// Do something here if the popup is open
//alert("dd")
var index = $('.ui-dform-text').index(document.activeElement) + 1;
$('.ui-dform-text').eq(index).focus();
}
});
*注意:警报可能会干扰焦点,因此请使用console.log进行输出,并在大多数浏览器的调试窗口中查看(如Chrome的F12调试工具).
更新:http://jsfiddle.net/TrueBlueAussie/5WkVW/4/
这个包装回到最后一个项目并且也适用于选择(默认行为被阻止,因此您只能使用空格打开或向上/向下选择选项.
$('input,select').on('keypress', function (e) {
if (e.which == 13) {
e.preventDefault();
var $next = $('[tabIndex=' + (+this.tabIndex + 1) + ']');
console.log($next.length);
if (!$next.length) {
$next = $('[tabIndex=1]');
}
$next.focus();
}
});
请求“文档”版本:http://jsfiddle.net/TrueBlueAussie/5WkVW/5/
$(document).on('keypress', 'input,select', function (e) {
if (e.which == 13) {
e.preventDefault();
var $next = $('[tabIndex=' + (+this.tabIndex + 1) + ']');
console.log($next.length);
if (!$next.length) {
$next = $('[tabIndex=1]');
}
$next.focus();
}
});
内容总结
以上是互联网集市为您收集整理的javascript – 按下输入时如何将焦点移动到下一个字段?全部内容,希望文章能够帮你解决javascript – 按下输入时如何将焦点移动到下一个字段?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。