Alex
Alex

Reputation: 1609

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" rows="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.

Upvotes: 0

Views: 417

Answers (3)

Ben Koehler
Ben Koehler

Reputation: 8681

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;

Upvotes: 1

JOBG
JOBG

Reputation: 4624

Try with

if ($(element).hasClass('textarea') && $(element).hasClass('required') && fieldLength == 0) {
        fieldError = "error message";
    }

Upvotes: 0

Tejs
Tejs

Reputation: 41236

Why not use

.hasClass()

Upvotes: 1

Related Questions