我有一个登录表单,在提交时已经过验证。此登录表单最初不会验证onkeyup事件,因为验证仅在submit上调用,这就是我想要的。如果我提交包含无效字段值的表单,即空白,则会正确生成错误。
但是,当我更正错误并成功登录然后注销时,登录表单现在会为onkeyup的两个字段生成错误。我尝试使用resetForm()来更正用户名字段的行为,但是密码字段仍会为onkeyup生成错误。我也尝试设置onkeyup:false,然后调用resetForm(),但是我必须将我的验证事件绑定更改为'mousedown'而不是'click',这导致验证工作不正确。
我也在表单上尝试了reset(),但这也不起作用。如何正确实现resetForm(),以便当用户最初进入登录页面时,以及当他们注销并返回登录页面时,两个字段都忽略onkeyup事件的验证,而无需重新加载页面。
init_language(function(){
var placeholderLabels = $('label[for="userId"], label[for="password"]').not('.error');
$('html').i18n();
if($('#sidebar-login fieldset span').length>0) {
$(placeholderLabels).css({'display':'block'});
} else {
$('#userId, #password').placeholder();
}
});
$('#input, #password').blur(function(){
$('html').i18n();
if($('#sidebar-login fieldset span').length>0) {
return;
} else {
$('#userId, #password').placeholder();
}
});
var validator = $("#sidebar-login").validate();
validator.resetForm();
}
$('.ajax_button_submit').live('click', function() {
var form = $(this).parents('form');
var is_submit = true;
if (form.attr('error') && !form.data('visit')) {
form.validate({errorLabelContainer: form.attr('error')});
form.data('visit', 1);
}
if (is_submit && form.valid()) {
var url = form.attr('url') || form.attr('action');
var type = form.attr('type') || 'json';
if (type == 'json') {
var data = JSON.stringify($('[data-submit!=false], #password[realtype!=text]', form).serializeJSON());
} else {
var data = $('[data-submit!=false], #password[realtype!=text]', form).serialize();
}
感谢您的帮助,
Ĵ
答案 0 :(得分:0)
我明白了。我不得不用以下方式取消绑定表单:$('#sidebar-login')。data('validator',null);