jquery验证插件 - resetForm()

时间:2014-01-27 21:34:33

标签: jquery validation

我有一个登录表单,在提交时已经过验证。此登录表单最初不会验证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();
      }

感谢您的帮助,

Ĵ

1 个答案:

答案 0 :(得分:0)

我明白了。我不得不用以下方式取消绑定表单:$('#sidebar-login')。data('validator',null);