表单提交验证需要 5-10 秒
Validation Taking 5-10 sec on Form Submit
我有一个非常简单的注册表单,只需要用户名、电子邮件和密码。我想看看为什么在用户提交后需要 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) 时,问题似乎出在 register.js 和 jquery.validator.js 正在调用的数千个小任务中大约 10 秒彼此。具体来说,它总是在 register.js 上触发的 submitHandler: function(form) 行。所以我想我看到了问题,但我不清楚如何解释或修复它。
有什么想法吗?我对使用这些验证插件还很陌生。
这一行
$('.register-form').submit();
应该阅读
form.submit();
所以函数应该是这样的
$('.register-form').validate({
submitHandler: function(form) {
form.submit();
},
rules:...
});
否则你会一直递归调用提交
来自文档
Example: Use submitHandler to process something and then using the default submit. Note that "form" refers to a DOM element, this way the validation isn't triggered again.
我有一个非常简单的注册表单,只需要用户名、电子邮件和密码。我想看看为什么在用户提交后需要 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) 时,问题似乎出在 register.js 和 jquery.validator.js 正在调用的数千个小任务中大约 10 秒彼此。具体来说,它总是在 register.js 上触发的 submitHandler: function(form) 行。所以我想我看到了问题,但我不清楚如何解释或修复它。
有什么想法吗?我对使用这些验证插件还很陌生。
这一行
$('.register-form').submit();
应该阅读
form.submit();
所以函数应该是这样的
$('.register-form').validate({
submitHandler: function(form) {
form.submit();
},
rules:...
});
否则你会一直递归调用提交
来自文档
Example: Use submitHandler to process something and then using the default submit. Note that "form" refers to a DOM element, this way the validation isn't triggered again.