在我的表单中,我为required
所有不能为空的元素添加了一个名为的类。然后我循环使用每个元素$.each()
并添加一个名为的类,该类border
将为所有这些元素应用 2px 红色边框。
var req = $('.required');
$.each(req, function(){
var curr_val = $(this).val();
if(! curr_val)
{
$(this).addClass('border');
}
});
现在页面上有垂直滚动,因此当单击提交时,我希望页面向上滚动到第一个空元素,以便用户知道出现问题,这就是表单未提交的原因
我尝试了什么
我在早期版本的代码中添加了这个块
$.each(req, function(){
var curr_val = $(this).val();
if(! curr_val)
{
$(this).addClass('border');
$('html, body').animate({ // added for scrolling purposes
scrollTop: $(this).offset().top
}, 200);
}
});
这行得通,但问题是它会每隔 0.2 秒滚动一次,直到到达最后一个空元素。这对用户来说看起来非常有趣且不受欢迎。
所以我想知道是否有办法让它滚动到第一个空元素发生并停在那里,即使它下面有更多的空元素。当它被填充并再次单击提交时,再次滚动到第一个空元素并将其停在那里。
JS小提琴
这是一个 JS Fiddle,可以帮助您入门,也可以让您了解我所指的有趣行为。注意它是如何一直滚动到最后一个元素的。