I'm using MVC3 with unobtrusive validation. I have a field that the user is expected to fill with some data and then press a "search" button. If search has never been pressed or the user has changed the input field after pressing search, the form should not be possible to submit.
I've added a hidden field that is set to true
by the click()
event of the button and emptied by the keyup()
event of the input box. Now I would like to add a validation rule that requires the hidden field to be true
to allow submit.
Preferably I would like to use unobtrusive validation, but if that doesn't work it is ok with something that requires some javascript, as long as it doesn't spoil the unobtrusive validation for the rest of the form.
The following code snippet does exactly what I want, until I add type="hidden"
.
<input class="required" id="client-searched" data-val="true"
name="ClientSearched" data-val-required="Press search!"/>
<span class="field-validation-valid" data-valmsg-replace="true"
data-valmsg-for="ClientSearched"/>
In some cases you want just ignore validation on one or several hidden fields (not all hidden field) in
client side
and also you want validate them and other hidden fields inserver side
. In these cases you have validation attributes for all hidden fields in yourViewModel
and they will be used to validate the form when you post it (server side
).Now you need a trick to just validate some of the hidden fields in client side (not all of them). In these cases i recommend you to use my mechanism!
Set
data-force-val
astrue
in the target hidden input tags. It's our custom attribute that we use to detect target hidden inputs witch we want validate them in client side.Also you can set
data_force-val
for your hidden inputs byjQuery
:Now, active
data-force-val="true"
functionality by some simple codes like these:Note:
validator.settings.ignore
default value is:hidden
I had a similar problem, and I used this code to change defaults, in MVC 4:
Source: JQuery validate
try
Here is an informative blog post
EDIT
@RAM suggested a better solution please FOLLOW