2012-03-09 4 views
11

Я использую jQuery Validator. И я пытаюсь выяснить: Как я могу отключить валидатор из моей формы после его отправки?jQuery Validator Unbinding

$(function() { 
    // Just the rules, etc... 
    validator = $("#sweepstakesForm").validate({rules: {fname: {required: true,minlength: 2,maxlength: 50},lname: {required: true,minlength: 2,maxlength: 50},email: {email: true,remote: "?c=home&m=jsHook&param=email&nojson=1",required: true,minlength: 6,maxlength: 120},address: {required: true,minlength: 5,maxlength: 100},state_0: {required: true},state: ); // etc ... 

    $('#sweepstakesForm').submit() { 

    } 
}); 

Я попытался это не дало никаких результатов:

validator = null; 
$("#sweepstakesForm").unbind('validate'); 
delete validator; 
+0

принял быстрый взгляд на [источник] (http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery. validate.js), и из того, что я вижу, нет способа отменить/уничтожить валидатор. –

+0

Почему _exactly_ вы пытаетесь убить валидатор? После того, как форма подтверждена и отправлена, вы либо на новой странице, либо кнопка отправки отключена, либо форма отключена/скрыта ... убийство валидатора является спорным вопросом. Возможно, если бы мы знали больше, мы могли бы предложить обходное решение. – Sparky

+0

один верный путь будет перезагружать всю форму как новый html – charlietfl

ответ

15

Попробуйте

$('#sweepstakesForm').data('validator', null); 
$("#sweepstakesForm").unbind('validate'); 
+3

Его первый, спасибо! – JREAM

+0

Первый «работает» для меня тоже, но, возможно, только потому, что он дает ошибку, «Uncaught TypeError: Невозможно прочитать настройки свойства« null »[строка 332 из jquery.validate.1.11.1.js] (https: //gist.github.com/tim-peterson/6249726), если вы повторно вводите недопустимые данные после сброса формы. –

+1

Спасибо, это сработало для меня. Кроме того, учитывая, что это двухлетний ответ, стоит отметить, что я тестировал это и могу подтвердить, что он работает на 'jQuery 1.7.2'. – crmpicco

2

Try добавления .unbind('submit')

$('#sweepstakesForm').submit(function() { 
    $(this).unbind('submit'); 
}); 
+0

Это не то, что он просил. Он хочет убить валидатора. – Sparky

+0

@ Sparky672, это интересный ответ. Предположительно, валидатор обязан отправлять события, и отмена всех обработчиков отправки должна фактически прекратить дальнейшую проверку. Но я предполагаю, что это минное поле побочных эффектов. – eyelidlessness

+0

Благодарим вас за отправку комментария, unbind был не совсем то, что я искал, но я ценю комментарий! – JREAM

1

Я не очень знаком с этим plugi п, но из документации это выглядит как то, что вы хотите:

$('#sweepstakesForm').rules('remove'); 
+0

Его не то, что я искал, но плохо держу это на заднем плане, спасибо! – JREAM

+0

@JREAM, не препятствует дальнейшей проверке? Из моего чтения документов, похоже, вы делаете то, о чем просили, возможно, вы можете объяснить разницу. – eyelidlessness