Hello. I'm somewhat new to javascript, primarily used to PHP, and I
have been attempting to revamp my javascript code base using jQuery
and some class structure.
However, I'm getting the error "this.checkRequired is not a function".
>From what I can find the documentation on classes in javascript online
is very sparse and there seem to be multiple ways of doing it, it is
somewhat confusing. I am not sure if I am even properly declaring
things.
I am wondering if anyone can point out a basic mistake that I am
making or something, it's driving me crazy and is roadblocking my
progress.
I call the class as follows:
_________________________
//element validation
jQuery.listen( "blur", ".validated", function(){
//if the field has a value
if( $j( this ).fieldValue() != "" ) {
//validate it
var validator = new Validator();
validator.validateElement( this )
}
});
_____________________
The code for the class is below:
________________________________
function Validator(){
this.target;
}
Validator.prototype.checkRequired = function( target ){
if( $j(target).fieldValue() != "" ){
$j(target).siblings( ".inputrequirement" ).removeClass( "inputrequired" );
}
else{
var thisClass = $j( this ).attr("class");
//check if it is required
if( thisClass.match( /required/ ) ){
//if so, change the background to say so and
update the text
$j(target).siblings( ".inputrequirement"
).addClass("class",
"inputrequired").html( "This is a required field" );
}
}
}
Validator.prototype.validateElement = function( target ){
//show the verifying icon
$j(target).siblings( ".inputstatus" ).attr("class",
"inputstatus
inputverifying");
//check the input with the server
$j.getJSON( REQUEST_PREFIX + "ValidateRequest", { name:
$j(target).attr("name"), id : $j(target).attr("id") , value :
$j(target).fieldValue() }, function( json ){
//valid input, change to confirmed and wipe out
any error text,
remove required indicator
if( json.validated == "true" ){
$j(target).siblings( ".inputstatus"
).attr("class", "inputstatus
inputconfirmed" ).html( "" );
}
//error, update with error text and change the
icon
else{
$j(target).siblings( ".inputstatus"
).attr( "class", "inputstatus
inputerror").html( json.error );
}
this.checkRequired( target );
});
}
________________________________
It fails on the line about four lines above,
"this.checkRequired(target);", producing "this.checkRequired is not a
function" error in the firebug console.
When the error is clicked it says:
this.checkRequired is not a function
(no name)(Object validated=true)eventdelegation.j... (line 109)
success()jquery.js (line 2780)
onreadystatechange(7)jquery.js (line 2735)
[Break on this error] this.checkRequired( target );
Anyway I'm hoping this is an elementary mistake or something in my
class structure and hopefully someone can point it out and save me a
ton of time and headache.
Also I apologize if this is not a proper subject for this discussion
group, if so feel free to delete it.
Thanks for any assistance!
Hugh