问题
I am pretty new to Jquery, I am using validation rule against my textbox. The problem is when i mark textbox is mandatory n user doesn't input any value then it doesn't show any validation message. I have associated another validation message for textbox tht the value shu be in range and which works when user provides any input.
$.validator.addMethod("requiredRangeFunction", function(value, element) {debugger
$.validator.messages["requiredRangeFunction"] =
jQuery.format(
$(element).attr('ErrorMessage') ? $(element).attr('ErrorMessage') : "Please enter the value between {0} and {1}",
$(element).attr('MinValue'),
$(element).attr('MaxValue')
);
return this.optional(element) || ((value > Number($(element).attr('MinValue')) && (value < Number($(element).attr('MaxValue')))));
}, "Please enter valid value.");
issue is with this.optional(element) which returns dependency mismatch when user doesnt provide any input.
my textbox can be optional too so i require to call this.optional(element)
回答1:
Testing for (this.optional(element) == true) worked for me.
So in your case it would be:
return (this.optional(element) == true) || ((value > Number($(element).attr('MinValue')) && (value < Number($(element).attr('MaxValue')))));
回答2:
(Opposite from Nav's solution)
return (this.optional(element) != false) || test;
this works for sure.
回答3:
Optional means the user doesn't have to provide any input. If there is no input, it doesn't need to be validated.
回答4:
You can replace the
return this.optional(element) || <test condition>
by
var r = $(element).rules();
var req=(this.objectLength(r))?r.required:false;
return !req || <test condition>;
May be it will be enouth:
var req=r.required; // true, false or undefined.
Assume that undefined is the same as false for our needs.
来源:https://stackoverflow.com/questions/1765302/dependency-mismatch-with-jquery-validate-plugin