JQuery validation using is() and multiple CSS classes
Trying to debug something that basically .trim()'s, .val()'s and .length's a textarea input as HTML below (truncated):
<form id="Kontaktanfrage" method="post" action="tests/testform/">
...
<textarea cols="50" row开发者_开发问答s="8" id="el_12" name="FORM[Kontaktanfrage][el_12]" title="Ihre Nachricht: *" class="textarea required"></textarea>
...
</form>
JavaScript:
function validateField(formId, fieldId) {
if (fieldId) {
var element = "form#"+formId+" input#"+fieldId;
var fieldValue = jQuery.trim(jQuery(element).val());
var fieldLength = fieldValue.length;
var fieldError = "";
if ($(element).is('.textarea.required') && fieldLength == 0) {
fieldError = "error message";
}
}
}
The above if
check is never true
.
Using JQuery: 1.4.1.
Having seen other examples online, I can't see what the difference should be. Feel free to test it in FireBug at (http://www.initiat.de/tests/testform/). Any help appreciated, can't see what I'm doing wrong.
You're creating your selector assuming that all of your fields are Input elements. TextArea is a different element and your selector should reflect that. I don't think that performance will take a big hit if you change this line
var element = "form#"+formId+" input#"+fieldId;
to this
var element = "form#"+formId+" #"+fieldId;
Why not use
.hasClass()
Try with
if ($(element).hasClass('textarea') && $(element).hasClass('required') && fieldLength == 0) {
fieldError = "error message";
}
精彩评论