jQuery-滚动到某个元素时自动输入焦点
jQuery - auto input focus when scroll hit certain element
我正在使用名为Waypoints的jQuery插件使用滚动操作。
我想要实现的是将焦点设置在视口中某个部分的第一个输入元素上,并在向下滚动时将焦点移动到下一个相应部分的输入上。而且,当滚动回上面的第一个部分时,它应该将焦点设置回第一个部分的输入。
以下是我使用上述插件的实际工作设置。不幸的是,我无法在我的JS Fiddle中真正启动和运行插件。
这个代码块的工作原理是在页面加载时设置焦点,并在向下滚动时将焦点更改为目标输入但是滚动回顶部部分并不能将焦点设置回原位。
(function($) {
var firstInput = $('section').find('input[type=text]').filter(':visible:first');
if (firstInput != null) {
firstInput.focus();
}
$('section').waypoint(function () {
var getFocus = $(this).find('input[type=text]').filter(':visible:first');
getFocus.focus();
});
$('section').waypoint(function () {
var getFocus = $(this).find('input[type=text]').filter(':visible:first');
getFocus.focus();
}, {
offset: function () {
return -$(this).height();
}
});
});
这是我的JS Fiddle没有插件部分。
只要有人能解释他们应该如何在普通jQuery中完成如果不熟悉这个插件。
$('input:first').focus();
$('section').waypoint(function() {
$(this).find('input:first').focus();
});
请看这把小提琴。
但是,使用鼠标滚轮向下滚动时,滚动有时会跳回中间部分。这可能是浏览器对输入焦点的反应。我还没有看完整的文档,但没有输入焦点的例子。
如果你只想做这个简单的任务,我建议你放弃这个插件。我可以向您展示如何使用jQuery完成这项工作。
您可以使用jQuery的scroll()
函数来处理滚动。您需要获取滚动上的scrollTop()
事件,然后将其与<input>
的顶部offset()
进行比较。
$(window).scroll(function(){
var st = $(this).scrollTop();
$('input[type=text]').each(function(){
var offset = $(this).offset();
if(st >= offset.top -20 && st < offset.top + $(this).height()){
$(this).focus();
}
});
});
这是小提琴。
相关文章:
- 在IE9中的输入字段中输入焦点最近按钮
- 那里的维基媒体代码是如何输入焦点的
- 无法通过 JavaScript 在输入焦点上触发键盘
- 输入焦点关闭键盘,需要长时间触摸
- jQuery-滚动到某个元素时自动输入焦点
- 输入:焦点只工作一次
- 输入焦点取决于更大的父元素与 jQuery
- 如何定位单个输入焦点
- 关闭输入焦点上的滑动菜单
- 输入焦点字段,然后在页面加载时添加类
- 无法使用 keyUp 更改表内的输入焦点
- 如何在设备定向时丢失输入焦点
- Phonegap Android 在输入焦点 Javascript 上显示键盘
- 在 CkEditor 中输入焦点
- 如何使用js更改平板电脑上的输入焦点
- 在输入焦点时隐藏ios设备上的键盘
- 当鼠标悬停在其他元素上时,如何删除和重新设置输入焦点
- onmousedown事件停止输入焦点
- ngTags输入焦点自动完成
- 使用jQuery验证器禁用自动输入焦点