Come rimuovere la convalida jQuery da un modulo?

Sto usando il plugin di convalida jQuery per convalidare un modulo e vorrei rimuovere la convalida e inviare il modulo se si fa clic su un determinato collegamento.

Sto inviando il modulo con javascript come jQuery('form#listing').submit() , quindi devo rimuovere le regole di validazione / funzione con javascript.

Il problema è che non riesco a capire come farlo. Ho provato cose come jQuery('form#listing').validate({}); e jQuery('form#listing').validate = null , ma senza fortuna.

Attiva il metodo di invio DOM per saltare la convalida:

 $("#listing")[0].submit(); 

Puoi rimuovere gli eventi dei nodes con unbind :

 jQuery('form#listing').unbind('submit'); // remove all submit handlers of the form 

Quello che stai probabilmente cercando è che il plugin di convalida possa anche annullare l’assegnazione dell’evento di invio:

 jQuery('form#listing').validate({ onsubmit : false }); 

Per entrambi devi essere in grado di rispondere con una chiamata a .submit() per inviare il modulo:

 jQuery('form#listing').unbind('submit').submit(); 
 var form = $('#my_form_id').get(0); $.removeData(form,'validator'); 

Sta davvero lavorando.

È ansible aggiungere una class css di annullamento a un elemento (pulsante, input) in modo che ignori la convalida

Puoi anche utilizzare la funzione pubblica “regole” in questo modo:

 $('input, select, textarea').each(function() { $(this).rules('remove'); }); 

Questo è quello che sto usando;)

Non ho trovato nessuno degli altri modi utili se si desidera triggersre / distriggersre la convalida dei moduli (ad esempio, una diversa convalida per i tipi di pagamento …)

Cosa ho dovuto fare (questa non è una bella soluzione ma funziona)

Configura la tua convalida:

 jQuery('#form').validate(); 

Disabilitare il modulo:

 jQuery('#form').validate().currentForm = ''; 

Abilitare nuovamente il modulo:

 jQuery('#form').validate().currentForm = jQuery('#form')[0]; 

Questo sembra funzionare per me ora:

 var form = $('#my_form_id').get(0); $(form).removeData('validate'); 
 $("#formName").validate().settings.ignore = "*"; 

Fare riferimento a: https://github.com/jzaefferer/jquery-validation/issues/725

Di recente ho eseguito l’aggiornamento a 1.5.5 dello script di convalida di Jörn e la funzione removeValidator è stata deprecata.

 ... jQuery.extend( jQuery.fn, { removeValidator: function(){ this.unbind(); jQuery.removeData(this[0], 'validator'); } ... 

Per tutti i tag input del modulo:

 $('#myform').validate().settings.ignore = '.valid'; $('input').addClass('valid'); 

Per me funziona.