Question

I'm using the jQuery Validation plugin and I've got a textbox with the class digits to force it to be digits only, but not required. When I call validate on the form it works fine, but if I call valid() on the textbox when it's empty, it returns 0, despite no error message showing and required not being set.

Does anyone know why it would be returning this for a seemingly valid input value?

Here is the code:

<input type="text" value="" name="kiloMetresTravelled" id="kiloMetresTravelled" class="digits"/>

and the script

<script type="text/javascript'>
 var isvalid = jQuery('#kiloMetresTravelled').valid(); 
 //isvalid == 0 when kiloMetresTravelled is blank
</script>
Was it helpful?

Solution

Check this, from the documentation:

Makes "field" required and digits only.

You could do something like this:

var isValid = jQuery('#kiloMetresTravelled').valid() || jQuery('#kiloMetresTravelled').val() == "";

OTHER TIPS

I think this works:

var e="#whatever";
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required');

There's a bug on the library when rule methods check for optional fields with "this.optional(element)". When the field is empty this.optional returns "dependency-mismatch" and the validation method returns "undefined" marking the field as invalid.

Full explanation here:

https://github.com/jzaefferer/jquery-validation/issues/481

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top