2012-03-09 2 views
11

Sto usando il jQuery Validator. E sto cercando di capire: Come posso staccare il validatore dal mio modulo una volta che è stato inviato?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() { 

    } 
}); 

ho cercato questi inutilmente:

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

diede una rapida occhiata al [l'origine] (http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery. validate.js) e da quello che posso vedere, non esiste un metodo per annullare l'associazione/distruzione del validatore. –

+0

Perché _exactly_ stai cercando di uccidere il validatore? Una volta che un modulo è stato convalidato e inviato, sei su una nuova pagina, il pulsante di invio è disabilitato, o il modulo è disabilitato/nascosto ... uccidere il validatore è un punto controverso. Forse se ne sapessimo di più, saremmo in grado di suggerire una soluzione alternativa. – Sparky

+0

un modo sicuro sarebbe ricaricare l'intero modulo come nuovo codice HTML – charlietfl

risposta

15

Prova

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

È il primo, grazie! – JREAM

+0

Il primo "funziona" anche per me, ma forse solo perché restituisce un errore, 'Uncaught TypeError: Impossibile leggere la proprietà 'settings' di null' [riga 332 di jquery.validate.1.11.1.js] (https: //gist.github.com/tim-peterson/6249726), se reinserisci i dati non validi dopo aver reimpostato il modulo. –

+1

Grazie, questo ha funzionato per me. Inoltre, considerando questa è una risposta di due anni, vale la pena sottolineare che ho provato questo e posso confermare che funziona su 'jQuery 1.7.2'. – crmpicco

2

Prova ad aggiungere un .unbind('submit')

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

Non è quello che ha chiesto. Vuole uccidere il validatore. – Sparky

+0

@ Sparky672, è comunque una risposta interessante. Presumibilmente, il validatore ha l'obbligo di inviare eventi e l'interruzione di tutti gli handler di invio dovrebbe interrompere in modo efficace ulteriori convalide. Ma immagino che sia un campo minato di effetti collaterali. – eyelidlessness

+0

Grazie per aver postato un commento, l'unbind non era esattamente quello che stavo cercando, ma apprezzo il commento! – JREAM

1

io non sono davvero familiarità con questo plugi n, ma dalla documentazione sembra che ciò che si vuole è:

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

Non è quello che stavo cercando, ma lo conservo nel dimenticatoio, grazie! – JREAM

+0

@JREAM, non impedisce ulteriori convalide? Dalla mia lettura dei documenti, sembra fare ciò che hai chiesto, forse puoi spiegare la differenza. – eyelidlessness