I've got a form where the user needs to click a link, select a user via a popup window which then populates a hidden field with an ID and a display field with the username.
The display field is set to disabled="disabled" to force the user to use the popup and not type a value in the field.
I need to ensure the user selects a name. I'm using jQuery and Jorn's validation plugin.
Doing a required: true on the disabled field doesn't seem to fire off if the value is blank.
Any ideas how to solve this?
You can use $(":disabled") to select all disabled items in the current context. To determine whether a single item is disabled you can use $("#textbox1").is(":disabled") . Save this answer.
The jquery validate plugin requires a form element to function, so you should have your form fields (no matter how few) contained inside a form. You can tell the validation plugin not to operate on form submission, then manually validate the form when the correct submit button is clicked.
According to the jQuery validate documentation for remote: The response is evaluated as JSON and must be true for valid elements, and can be any false, undefined or null for invalid elements, using the default message; or a string, eg. "That name is already taken, try peter123 instead" to display as the error message.
addMethod( name, method [, message ] ) Description: Add a custom validation method. It must consist of a name (must be a legal javascript identifier), a javascript based function and a default string message.
Instead of making it disabled, have you tried making it readonly?
<input type="text" readonly="readonly" />
I remember from years ago that disabled fields are not submitted by forms, and hence probably are not validated
Here is the W3C HTML4 Spec on the topic.
According to the previous suggestion the possible solution could be:
var _valid = $.fn.valid;
$.fn.valid = function (alsoDisabled) {
var alsoDisabled = alsoDisabled || false;
if (alsoDisabled) {
this.find('[disabled]').prop('disabled', false);
}
var retVal = _valid.apply(this);
if (alsoDisabled) {
this.find('[disabled]').prop('disabled', true);
}
return retVal;
};
and so you could call the valid method with the optional arguments:
$('#form').valid(true)
to check also disabled field or
$('#form').valid()
for the normal behaviour
best regards Gaetano
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With