我有一个非常简单的登记表,只需要一个用户名,电子邮件和密码。我想知道为什么在用户提交之后要花费5-10秒才能完成注册。我试着在服务器端进行分析(请参阅这里),并解决了这个问题。
看来我的问题是客户端验证。我使用的是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的profiling (图片链接)时,问题似乎是register.js和jquery.validator.js相互调用的数千个微小任务中的10秒左右。具体来说,它始终是在submitHandler: function(form)行上触发的。因此,我认为我看到了问题,但我不清楚如何解释或解决它。
有什么想法吗?我对使用这些验证插件非常陌生。
发布于 2016-09-14 19:41:04
这条线
$('.register-form').submit();
应改为
form.submit();
所以这个函数应该是这样的
$('.register-form').validate({
submitHandler: function(form) {
form.submit();
},
rules:...
});
其他明智的做法是,您一直递归地调用submit。
从文件中
示例:使用submitHandler处理某些内容,然后使用默认提交。请注意,"form“是指DOM元素,这样就不会再次触发验证。
https://stackoverflow.com/questions/39495893
复制相似问题