Mohan Ram
Mohan Ram

Reputation: 8463

addmethod in jquery.validate

How to use addmethod in jquery.validate. Example

$("#formname").validate({
    rules: {
        textbox: {
            required: true,
            regexp: /['"]/
        },
        methods: {
            required: "Should not be blank",
            regexp: "Single quotes and double quotes not allowed"
        }
    }
});

I need to check this quotes in textbox with addmethod. How can i do this. Explain me by implementing your answer with my sample code.

Upvotes: 2

Views: 4563

Answers (2)

Venky Maha
Venky Maha

Reputation: 1

$("#formname").validate({
  rules: {
    textbox: {
        required: true,
        regexp: true
    }
  },
  messages: {
     textbox: {
         required: "Should not be blank",
         regexp: "Single quotes and double quotes not allowed"
     }
  }
});



// Regexp validation
$.validator.addMethod("regexp", function(value, element, arg){
var reg_val=$('#textbox').val();
var regExp=/^['"]+$/;

if($('#textbox').val().match(reg_val)){
  return true;
}else{
   return false;
}
}, "");

Upvotes: 0

Nick Craver
Nick Craver

Reputation: 630399

First we need a few fixes, the layout for messages is like this (you can't do this with your original options...the plugin just doesn't look for that structure):

$("#formname").validate({
    rules: {
        textbox: {
            required: true,
            regexp: /['"]/
        }
    },
    messages: {
        textbox: {
            required: "Should not be blank",
            regexp: "Single quotes and double quotes not allowed"
        }
    }
});

Then your method would look like this:

$.validator.addMethod("regexp", function(value, element, param) { 
  return this.optional(element) || !param.test(value); 
});

You can test it out here....but you notice your regex is backwards, so the naming's not quite right...I'd rename regexp to nomatch...or something more indicative of the behavior you're looking for.

Upvotes: 2

Related Questions