Sebastian: return-value from javascript function

Hallo,

ich möchte gern die Usereingabe bei einem Inputfield überprüfen und ggf. auch gleich entsprechend korrigieren. In diesem Feld dürfen nur Zahlen eingegeben werden; die Überprüfung funktioniert auch so, aber wenn der User ein falsches Zeichen eingibt, dann soll dieses auch entsprechend gelöscht
werden. Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.

  
           function isNumeric(sText) {  
            alert(sText);  
            var ValidChars = "0123456789";  
            var strReturn = "";  
  
            for (i = 0; i < sText.length; i++) {  
                Char = sText.charAt(i);  
                if (ValidChars.indexOf(Char) != -1) {  
                    //remove this character  
                    strReturn += Char;  
                }  
            }  
  
            return strReturn;  
        }

<input type="text" name="uni1" id="uni1" maxlength="15" class="form-txtf" onkeyup="return isNumeric(this.value)" value="34" />

Für einen Tipp wäre ich euch sehr dankbar.

Gruß
Seb

  1. Tach,

    Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.

    return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.

    mfg
    Woodfighter

    1. Tach,

      Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.

      return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.

      lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?

      1. Oh, eine Raterunde :-)

        Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.

        return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.

        lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?

        Nein und Ja

        Struppi.

      2. Hi,

        return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.

        lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss.

        Muss nicht, wäre aber praktisch, damit es nicht an jeder aufrufenden Stelle gemacht werden muss.

        Und btw., in Annahmen geht man richtig, statt sich rein zu legen :-)

        Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?

        Übergebe nicht den Inhalt des Feldes mit this.value an die Funktion, sondern die Referenz auf das Feld selber, also nur this.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      3. Tach,

        Hier passiert leider noch gar nichts - alle Zeichen bleiben stehen, wie sie eingegeben worden sind.

        return ändert den Wert des Formularfeldes nicht, das mußt du selber tun.

        lege ich richtig in der Annahme, dass dies in der Javascript-Methode gemacht werden muss. Geht das auch so, dass man die Methode für zig-Inputfelder etc. verwenden kann?

        vielen Dank it`s working, indem ich this übergebe.

  2. 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