首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表单提交需要5到10秒的验证。

表单提交需要5到10秒的验证。
EN

Stack Overflow用户
提问于 2016-09-14 16:55:34
回答 1查看 56关注 0票数 0

我有一个非常简单的登记表,只需要一个用户名,电子邮件和密码。我想知道为什么在用户提交之后要花费5-10秒才能完成注册。我试着在服务器端进行分析(请参阅这里),并解决了这个问题。

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

代码语言:javascript
运行
复制
$('.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的profiling (图片链接)时,问题似乎是register.js和jquery.validator.js相互调用的数千个微小任务中的10秒左右。具体来说,它始终是在submitHandler: function(form)行上触发的。因此,我认为我看到了问题,但我不清楚如何解释或解决它。

有什么想法吗?我对使用这些验证插件非常陌生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 19:41:04

这条线

代码语言:javascript
运行
复制
$('.register-form').submit();

应改为

代码语言:javascript
运行
复制
form.submit();

所以这个函数应该是这样的

代码语言:javascript
运行
复制
$('.register-form').validate({
  submitHandler: function(form) {
    form.submit();
  },

   rules:...
});

其他明智的做法是,您一直递归地调用submit。

从文件中

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

https://jqueryvalidation.org/validate/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39495893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档