2014-01-27 2 views
0

У меня есть форма для входа в систему, которая проверяется на отправке. Эта форма входа сначала не проверяет события onkeyup, потому что валидация вызывается только на submit, и это то, что я хочу. Если я отправлю форму с недопустимыми значениями поля, то есть пустым, ошибки будут правильно сгенерированы.jquery validation plugin - resetForm()

Однако, когда я исправляю ошибки и успешно вхожу в систему и затем выхожу из системы, форма входа теперь генерирует ошибки для обоих полей для onkeyup. Я попытался использовать resetForm(), который исправляет поведение поля username, но поле пароля по-прежнему генерирует ошибку для onkeyup. Я также попытался установить onkeyup: false, а затем вызвал resetForm(), но тогда мне нужно изменить привязку привязки проверки к «mousedown» вместо «click», что приводит к неправильной работе проверки.

Я также попытался выполнить сброс() на самой форме, но это тоже не сработает. Как я могу правильно реализовать 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(); 
     } 

Спасибо за любую помощь,

J

+0

Я выясняю это. Мне пришлось отменить форму с помощью: $ ('# sidebar-login'). Data ('validator', null); – neridaj

+0

Вы не используете плагин jQuery Validate, поэтому не используйте тег [tag: jquery-validate]. И поскольку вы выяснили свою проблему, отправьте ответ ниже, чтобы он помогал другим. В противном случае, если вы предпочитаете, вы можете указать свой вопрос для удаления. – Sparky

ответ

0

Я понять это. Мне пришлось отменить форму с помощью: $ ('# sidebar-login'). Data ('validator', null);