chuckd
chuckd

Reputation: 14550

Create jQuery Validate rule for positive whole numbers

How do I create a rule for only positive whole numbers greater then 0 (ex. 1,2,3,4,5,etc)?

var form = $('#formClientLicense')[0];
$(form).validate();

var quantity = $(form).find("input[name='Quantity']")[0];
$(quantity).rules("add", {
    required: true,
    min: 1,
    step: 1,
    number: true,
    messages: {
        required: jQuery.validator.format("Required Field"),
        number: "Not a number",
        min: jQuery.validator.format("Please select positive number"),
        step: jQuery.validator.format("Please select whole number (ex. 1,2,3,4)")
    }
});

if ($(form).valid()) {
    // run here
}

Upvotes: 3

Views: 7465

Answers (3)

The easiest way to do it is

    $( "#myform" ).validate({
      rules: {
        field: {
          required: true,
          digits: true
        }
      }
    });

Ref : digits method | jQuery Validation Plugin --> https://jqueryvalidation.org/digits-method/

Upvotes: 2

Ortiga
Ortiga

Reputation: 8814

You can use a combination of min and step for that.

This way, it will only accept a multiple of 1, starting at 1.

$(quantity).rules("add", {
        number: true
        min: 1,
        step: 1,
        messages: {
            number: "Not a number",
            min: jQuery.validator.format("Please select positive number"),
            step: "Enter a integer number."
        }
});

You don't need minlenght, as that is for strings.

Upvotes: 0

Sparky
Sparky

Reputation: 98738

For a postive whole number greater than zero, combine the min rule with the integer rule. The integer rule can be found within the additional-methods.js file.

$(quantity).rules("add", {
    required: true,
    min: 1,
    integer: true,
    messages: {
        required: jQuery.validator.format("Required Field"),
        min: jQuery.validator.format("Please select positive number"),
        integer: jQuery.validator.format("Please select whole number (ex. 1,2,3,4)")  
    }
});

DEMO: jsfiddle.net/h6bsawqb/

Upvotes: 5

Related Questions