admin管理员组

文章数量:1135599

I'm using the jQuery validation plugin to validate a form, and I'd like to remove the validation and submit the form if a certain link is clicked.

I am submitting form with javascript like jQuery('form#listing').submit(), so I must remove the validation rules/function with javascript.

The problem is that I can't figure out how to do this. I've tried things like jQuery('form#listing').validate({}); and jQuery('form#listing').validate = null, but with no luck.

I'm using the jQuery validation plugin to validate a form, and I'd like to remove the validation and submit the form if a certain link is clicked.

I am submitting form with javascript like jQuery('form#listing').submit(), so I must remove the validation rules/function with javascript.

The problem is that I can't figure out how to do this. I've tried things like jQuery('form#listing').validate({}); and jQuery('form#listing').validate = null, but with no luck.

Share Improve this question edited Mar 25, 2010 at 18:59 Ben Crouse asked Dec 12, 2008 at 16:28 Ben CrouseBen Crouse 8,3485 gold badges37 silver badges51 bronze badges
Add a comment  | 

12 Answers 12

Reset to default 71

Trigger the DOM submit method to skip the validation:

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

You can remove events of nodes with unbind:

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

What you are probably looking for is that the validation plugin can also unassign itself from the submit event:

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

For both of these you should be able to follow up with a call to .submit() to submit the form:

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

Is really working.

You can also use the public "rules" function in this way:

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

That's what I'm using ;)

You can add a css class of cancel to an element (button, input) so that it skips the validation

I have found none of the other ways helpful if you wanted to toggle on/off your forms validation (e.g. different validation for payment types...)

What I have had to do (this is not an nice fix but it does work)

Set up your validation:

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

Disabling the form:

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

Enabling the form again:

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

This seems to work for me now:

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

Refer : https://github.com/jzaefferer/jquery-validation/issues/725

For all the tags input of form:

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

It works for me.

I recently upgraded to 1.5.5 of Jörn's validator script and the removeValidator function has been deprecated.


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

in 2022

the answers above do not work now for me,

So I've written this js method, this would remove the jquery validation correctly

function RemoveJQVRule(rulename, inputname) {
   $(`[name="${inputname}"]`).rules('remove', rulename);
   $(`[name="${inputname}"]`).removeAttr(`data-val-${rulename}`);

   // message span element
   $(`#${inputname.replace(/\./img, '_')}-error`).html("");
   $(`[data-valmsg-for="${inputname}"]`).html("");
}

Examples:

    RemoveJQVRule('required', 'Shipper.Contact.NationalId');
    RemoveJQVRule('maxlength-max', 'SomeInputName');
    RemoveJQVRule('regex', 'SomeInputName');

Note:- if it does not work you may need to edit it a little bit (the css selectors)

Thanks

The validation lib now provides a method to completely remove the configuration from the form.

Official example:

/*
 * On SPA page start.
 */
var validator = $( "#myform" ).validate();
 
/*
 * Just before SPA page's navigation away.
 */
validator.destroy();
 
/*
 * After this point the #myForm form is back to its original boring state.
 */

本文标签: javascriptHow do I remove jQuery validation from a formStack Overflow