Reputation: 34193
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>
Upvotes: 3
Views: 19416
Reputation: 2278
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
Upvotes: 0
Reputation:
I think this works:
var e="#whatever";
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required');
Upvotes: 2
Reputation: 827366
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() == "";
Upvotes: 7