jQuery滚动到特定的div位置以解决错误并聚焦。

13

我有一个隐藏的

元素,其中包含整个表单的特定错误消息。在提交表单之前,我运行一个验证例程来检查所有必填字段是否填写了一些文本。如果没有填写,则会显示一个带有“redAlert”类的
元素,位于文本字段的正上方。当显示错误消息时,我还希望对话框窗口滚动到此位置。我知道有很多可用于执行此操作的插件,但我想使用简单的Jquery来完成它。我试图A)找到具有“redAlert”类的第一个可见的
元素,B)通过调用该
元素的.offset()方法找到其位置,然后C)在window对象上调用.scroll()方法,但我做不到。请让我知道是否我完全错过了什么,或者我的语法不正确(我经常发现自己与Jquery的语法错误)。以下是我的代码。 另外,这仅查找可见的
元素(假设每次只有一个错误
元素),请提供查找特定类别中第一个可见的
元素的选择器。

var errorDiv = $('.redAlert:visible').attr("id");
var scrollPos = $("#"+errorDiv ).offset();
//alert(scrollPosition); // This alert always says 'null', why ?
$(window).scroll(scrollPos);
//Also tried scrollTo();

非常感谢您提前的帮助。

2个回答

26
var errorDiv = $('.redAlert:visible').first();
var scrollPos = errorDiv.offset().top;
$(window).scrollTop(scrollPos);

示例:http://jsfiddle.net/Cjuve/2/


1
我不认为这会奏效。 看一下我留下的代码。
$('html, body').animate({
    scrollTop: ($('.error').first().offset().top)
},500);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接