Mastershrimp: Klassenattribut in Klassenmethode nicht benutzbar

Beitrag lesen

Heyho!

Ich bastele gerade an einem Script, das nach dem Laden eines Dokuments aufgerufen werden soll und bei jedem Input-Feld das maxlength-Attribut ausliest, dieses dann entfernt und einen onkeydown-Handler einfügt, der eine Methode startet, die die Eingabelänge überprüft.

Nach einem prozeduralen Versuch, der gründlich in die Hose ging, hier nun ein objektorientierter. Allerdigns sind die Attribute maxLength und inputElem in der Methode keydown nicht benutzbar (maxLength ist "-1" und inputElem ist "undefined").

Warum?

  
function loadInputLengthChecker() {  
 var inputFields = document.getElementsByTagName("input");  
 if(inputFields.length > 0) {  
  for(var i=0; i<inputFields.length; i++) {  
   var curInputField = Element.extend(inputFields[i]);  
   new InputLimit(curInputField);  
  }  
 }  
}  
  
var InputLimit = Class.create( {  
 initialize: function(element) {  
  this.inputElem = element;  
  this.maxLength = element.getAttribute("maxlength");  
  if(this.maxLength!=null) {  
   element.removeAttribute("maxlength");  
   element.onkeydown = this.keydown;  
  }  
  //alert("Ergebnis von initialize: inputElem=" + this.inputElem + ", maxLength=" + this.maxLength);  
 },  
 keydown: function() {  
  if(this.maxLength > 0) {  
   if(this.inputElem.value.length > this.maxLength) {  
    alert("In dieses Eingabefeld dürfen nur " + this.maxLength + " Zeichen eingegeben werden!");  
    this.inputElem.value = this.inputElem.value.substr(0, this.maxLength);  
   }  
  }  
  else  
   alert("inputElem: " + this.inputElem + ", maxLength: " + this.maxLength);  
 }  
});  

Das ganze wird wie gesagt mit <body onload="loadInputLengthChecker()"> gestartet.

Gruß

Mastershrimp