javascript 将焦点放在屏幕中间的元素上不起作用

nkcskrwz  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(105)

我有一个函数检查用户输入是否正确,如果不正确,我希望页面滚动以关注特定的输入字段。

$("#myElementID").focus();

这和预期的一样,页面立即跳转到输入字段,并将其放在页面的顶部,没有任何填充。这使得它很难看到,所以我想把它放在屏幕的中心。我在SO上找到了this answer,它显示了以下代码:

$("#myElementID").focus(function () {
     var center = $(window).height() / 2;
     var top = $(this).offset().top;
     if (top > center) {
         $('html, body').animate({ scrollTop: top - center }, 'fast');            
     }
 });

现在它根本不聚焦,我试过alert,它似乎根本没有进入功能。

如何使输入焦点位于屏幕中心?

7kqas0il

7kqas0il1#

此代码将处理程序绑定到焦点事件:

$("#myElementID").focus(function(){...});

它相当于:

$("#myElementID").on("focus", function(){...});

您应该运行此代码一次:

$("#myElementID").focus(function () {
     var center = $(window).height() / 2;
     var top = $(this).offset().top;
     if (top > center) {
         $('html, body').animate({ scrollTop: top - center }, 'fast');            
     }
 });

然后使用$("#myElementID").focus();触发输入字段上的焦点事件。

相关问题