jquery在出现错误和焦点时滚动到特定的div位置

jquery在出现错误和焦点时滚动到特定的div位置,jquery,validation,scroll,position,Jquery,Validation,Scroll,Position,我有一个隐藏的div,在整个表单中都有特定的错误消息。在提交表单之前,我运行一个验证例程来检查是否所有必填字段都填充了一些文本。如果不是,则在文本字段的正上方可以看到类为“redAlert”的div。当显示错误消息时,我还希望对话框窗口向右滚动到此位置。我知道有很多插件可以用来做这件事,但我想用简单的Jquery来做。我正在尝试A)使用类redAlert查找第一个可见div,b)通过调用该div上的.offset()来查找其位置,然后c)调用window对象上的.scroll(),但我无法实现这

我有一个隐藏的div,在整个表单中都有特定的错误消息。在提交表单之前,我运行一个验证例程来检查是否所有必填字段都填充了一些文本。如果不是,则在文本字段的正上方可以看到类为“redAlert”的div。当显示错误消息时,我还希望对话框窗口向右滚动到此位置。我知道有很多插件可以用来做这件事,但我想用简单的Jquery来做。我正在尝试A)使用类redAlert查找第一个可见div,b)通过调用该div上的.offset()来查找其位置,然后c)调用window对象上的.scroll(),但我无法实现这一点。如果我完全遗漏了什么或者我的语法无效,请告诉我(我经常发现自己在Jquery中遇到语法错误)。下面是我的代码。 另外-这只能找到可见的div(假设一次只有一个错误div),您可以为我提供一个选择器,用于查找具有特定类的第一个可见div

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

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

演示:

我认为它行不通

看看我留下的代码

$('html, body').animate({
    scrollTop: ($('.error').first().offset().top)
},500);

完美的工作起来很有魅力。多谢!!