验证表格提交时间为5-10秒

时间:2016-09-14 16:55:35

标签: javascript jquery validation profiling

我有一个非常简单的注册表单,只需要用户名,电子邮件和密码。我试图了解为什么用户提交后需要5-10秒才能完成注册。我尝试在服务器端进行性能分析(参见here),并将其作为问题排除。

看起来我的问题是客户端验证。我正在使用https://jqueryvalidation.org/ JS文件以及另一个自定义文件,该文件告诉用户他们是否正在尝试使用已存在的名称或密码:

$('.register-form').validate({

    submitHandler: function(form){

        $('.register-form').submit();

    },

    rules: {
        password: {
            required: true
        },

        tos: {
            required: true
        },

        username: {
            required: true,
            remote: '/api/v1/users/username/'
        },

        email: {
            required: true,
            email: true,
            remote: '/api/v1/users/email/'
        },

    },

    messages: {
        first_name: {
            required: 'Please include your first name.'
        },

        last_name: {
            required: 'Please include your last name.'
        },

        password: {
            required: 'Please create a password'
        },

        tos: {
            required: 'Please check that you agree to our TOS and Privacy Policy'
        },

        email: {
            required: 'Please include your email.',
            email: 'Please insert a valid email address.',
            remote: 'This email is already in use.'
        },

        username: {
            required: 'Please create a username.',
            remote: 'This username is already in use.'
        }

    }

});

当我使用Chrome的分析(picture link)时,看起来问题是大约10万个小任务,其中register.js和jquery.validator.js相互调用。具体来说,它始终在register.js上触发 submitHandler:function(form)行。所以我认为我看到了问题,但我不清楚如何解释它或修复它。

有什么想法吗?我是使用这些验证插件的新手。

1 个答案:

答案 0 :(得分:0)

这一行

$('.register-form').submit();

应该阅读

form.submit();

所以函数看起来应该是这样的

$('.register-form').validate({
  submitHandler: function(form) {
    form.submit();
  },

   rules:...
});

另外,你继续以递归方式调用提交

来自文档

  

示例:使用submitHandler处理某些内容,然后使用默认提交。请注意,“form”指的是DOM元素,这样就不会再次触发验证。

https://jqueryvalidation.org/validate/