Jquery 在验证时滚动到元素

Jquery 在验证时滚动到元素,jquery,jquery-validate,scrollto,Jquery,Jquery Validate,Scrollto,我有一个与这里的表单功能非常相似的表单 但是由于表单很长,我需要页面平滑地滚动到第一个元素并出现错误,请查看我的代码: highlight: function(label) { $(label).parent().find('.valid').each(function(){ $('label[class^="valid"]').remove(); }); }, success: functi

我有一个与这里的表单功能非常相似的表单

但是由于表单很长,我需要页面平滑地滚动到第一个元素并出现错误,请查看我的代码:

highlight: function(label) {
        $(label).parent().find('.valid').each(function(){
            $('label[class^="valid"]').remove();       
        });
    },        
    success: function(label) {
        if(label.text('OK!').parent().find('.valid').html() == null) {
            label.removeClass('error').addClass('valid');  
        } else {
            label.remove();
        }
    },
     errorPlacement: function(error, element) {
        if (element.attr("name") == "firstname")
            {
                error.insertAfter("lastname");
            }
            else
            {
                error.insertAfter(element);
            }
        $.scrollTo(element, {duration: 750});
        }
    });


$("#frmsubmit").validate().form();
    $('label[class^="error"]:not(.valid)').remove();
正如您所见,我必须在页面加载时验证表单,以选中正确的字段(根据客户要求),因此scrollTo使页面在加载时摆动,然后在验证时摆动,我猜这是因为它验证了两次。我怎样才能用正确的方法来做


谢谢

这可以通过多种方式实现。假设您想要滚动到第一个错误,那么这将完成:

$(document).ready(function(){
    $('#contact-form').validate(
    {
        rules: {
            name: {
                minlength: 2,
                required: true
            },
            email: {
                required: true,
                email: true
            },
            subject: {
                minlength: 2,
                required: true
            },
            message: {
                minlength: 2,
                required: true
            }
        },
        highlight: function(label) {
            $(label).parent().find('.valid').each(function(){
                $('label[class^="valid"]').remove(); 
                $(label).offset().top                
            });
        },        
        success: function(label) {
            if(label.text('OK!').parent().find('.valid').html() == null) {
                label.removeClass('error').addClass('valid');  
            } else {
                label.remove();
            }
        }        
    });
    $("#contact-form").validate().form();
    $('label[class^="error"]:not(.valid)').remove();
});
​

好的,我找到了一个技巧,但它可以,例如,我在页面顶部设置了一个全局变量

var firstcheck = 0
在错误处理程序内部

if (firstcheck == 1){
$.scrollTo(element, {duration: 750});
}

在调用form()之后,我将其设置为1,很抱歉,这与已经存在的代码有何不同?您删除了scrollTo,那么这个滚动将如何顺利进行?