molily: return-value from javascript function

Beitrag lesen

Hallo,

ich würde das folgendermaßen machen:

<input type="text" id="textfeld">  
  
<script type="text/javascript">  
[code lang=javascript]// Der Code wird in eine selbstausführende Funktion verpackt,  
// damit die Variablen und Funktionen nur lokal sind.  
(function () {  
   // [link:http://molily.de/js/event-handling-fortgeschritten.html#einfaches-addevent@title=addEvent-Helferfunktion]  
   function addEvent (obj, type, fn) {  
      if (obj.addEventListener) {  
         obj.addEventListener(type, fn, false);  
      } else if (obj.attachEvent) {  
         obj.attachEvent('on' + type, function () {  
            return fn.call(obj, window.event);  
         });  
      }  
   }  
  
   // Greife auf das Textfeld zu  
   var textfeld = document.getElementById('textfeld');  
   // Registriere Event-Handler  
   addEvent(textfeld, 'keyup', filterInput);  
   addEvent(textfeld, 'change', filterInput);  
   addEvent(textfeld, 'keypress', preventInput);  
  
   // Filtere den [ref:self812;javascript/objekte/elements.htm#value@title=value-String] des Feldes mit [ref:self812;javascript/objekte/string.htm#replace@title=replace] und einem [ref:self812;javascript/objekte/regexp.htm@title=regulären Ausdruck]  
   // (Lösche alle Zeichen die nicht 0-9 sind)  
   function filterInput (e) {  
      textfeld.value = textfeld.value.replace(/[^\d]/g, '')  
   }  
  
   // Verhindere, dass überhaupt andere Zeichen als 0-9  
   // eingegben werden können.  
   function preventInput (e) {  
      // Hole den Code des gedrückten Zeichens browserübergreifend  
      var charCode = e.charCode || e.keyCode;  
      // Wandle Code in Zeichen um  
      var char = String.fromCharCode(charCode);  
      // Teste mit einem regulären Ausdruck, ob es 0-9 ist  
      if (/[^\d]/.test(char)) {  
         // Wenn nicht, [link:http://molily.de/js/event-handling-objekt.html#standardaktion@title=unterdrücke die Standardaktion]  
         if (e.preventDefault) {  
            e.preventDefault();  
         } else {  
            e.returnValue = false;  
         }  
      }  
   }  
})();

</script>[/code]

Mathias