Gandalf StormCrow
Gandalf StormCrow

Reputation: 26192

jQuery is not a function error

What is wrong with this statement?

message = $("#contact-form").find(".long-text");

if(message.val().length < 15)
{
    message.css("border","2px solid red");
    alert("Your message must be more than 15 character long");
}

I get message.val is not a function error in Firebug? What could be the reason?

NEW

OK, now my form won't submit if I have more or less than 15 characters. Should I open a new question on this or should I continue on this one?

I have this inside:

$("#contact-form").submit(function(){
  message = $("#contact-form").find(".long-text");

    if(message.val().length < 15)
    {
        message.css("border","2px solid red");
        alert("Your message must be more than 15 character long");
        return false;
    }
    else {
        Post form with Ajax ..
    }
});

Upvotes: 3

Views: 3640

Answers (4)

Rouan van Dalen
Rouan van Dalen

Reputation: 768

You could try

message = $("#contact-form").find(".long-text").first();

Upvotes: -1

BalusC
BalusC

Reputation: 1108632

As you can see in the syntax highlighter, the quotes went bogus :) There's a doublequote missing.

Besides, the val() only works on input elements (input, select, textarea and button). If it is indeed not an input element, then rather use text() instead. Further there's no such function as length(), you probably would like to use the length property.

I recommend to go get yourself through some basic jQuery tutorials and/or to go get a jQuery book.

Upvotes: 4

ant
ant

Reputation: 22948

How about .length instead of length()

Upvotes: 0

alex
alex

Reputation: 490153

Besides missing the end quote delimiter, here are some other notes

  • length is a property, not a method. It should be message.val().length
  • val() is also only useful for HTML input elements. You could try message.html().length or use text(), depending on your requirements

Upvotes: 0

Related Questions