Reputation: 754
I am using data annotation for validation and also using unobtrusive.js for client side validation.
I have several hidden fields that are not validated (and I don't need) by default as per the default setting of jquery.validate.js (ignore: ":hidden").
In my case I just want to validate a particular hidden field and not the all as a result I can't override
***ignore: ":hidden"*** to ***ignore:[]***.
If it is changed then all hidden fields will be considered for validation which is not my requirement.
Have no idea how to enable validation for a particular hidden field.
[ValidDate(ErrorMessage = "This is not a valid date.Please enter date in dd/mm/yyyy format.")]
public string HiddenSelectedDob { get; set; }
Where ValidDate
is a custom attribute.
Here I am taking input from the user for the day , month and year from three different dropdowns and for the change event of each drop down the value of the HiddenSelectedDob
will be set using jQuery.
Finally on submit this hidden filed should be validate.
I have given a class name to that hidden filed like..
@Html.HiddenFor(m => m.HiddenSelectedDob, new { @class = "validateAlways" })
and override the default setting of jquery.validate.js like
$.validator.setDefaults({ ignore: ":hidden:not(.validateAlways)" });
but the result is same. The field is not validating.
Upvotes: 1
Views: 2663
Reputation: 60503
Well, the only way I see is to add a class to the hidden input that you wanna validate.
So you'll have to do this at the view level.
@Html.HiddenFor(x => x.HiddenSelectedDob, new{@class="validateAlways"})
Then, change the ignore rule of validate.js to
ignore: ':hidden:not('.validateAlways')'
Which means : ignore all hidden inputs, except if they have a validateAlways
class.
Upvotes: 7