Der Martin: zahl oder buchstabe

Beitrag lesen

Moin,

hab ne lösung im netz gefunden - ich posts mal - falss es einer braucht

das ist nicht wirklich eine Lösung, sie funktioniert nicht einmal zuverlässig unter den Einschränkungen, die du dir selbst gesetzt hast.

function checkKey(objInput){

// Neues Zeichen aus Gesamtinhalt ermitteln
    var strCheck = objInput.value;
    strCheck = strCheck.substring((strCheck.length-1), strCheck.length);

// Falls es sich nicht um eine Ziffer handelt
    if(strCheck.search(/[0-9]/) == -1){
      // Falls das Feld leer ist
      if(objInput.value == "") return;

// Letztes Zeichen entfernen
      objInput.value = objInput.value.substr(0, (objInput.value.length-1));

/* Falls bei Fehleingabe gesamter Inhalt gelöscht werden soll -> nächste Zeile auskommentieren */
      //objInput.value = "";
    }
  }

  
Problemszenarien:  
 \* Copy & Paste per Maus/Kontextmenü: Da wird onkeyup gar nicht ausgelöst, also auch  
   nichts gecheckt. Jeder beliebige String kann ungeprüft eingefügt werden.  
 \* Copy & Paste per Tastatur: Ich füge "27T300" ein, onkeyup löst aus, deine checkKey()  
   erkennt das falsche Zeichen, schneidet aber stur das letzte Zeichen ab; übrig bleibt  
   "27T30" im Eingabefeld.  
 \* Editieren der Eingabe: Ich gebe "20382" ein, gehe dann mit dem Cursor drei Stellen  
   nach links und ergänze ein "\*". checkKey() erkennt abermals einen Fehler, schneidet  
   das letzte Zeichen ab, übrig bleibt "20\*38".  
  
So long,  
 Martin  

-- 
Abraham sprach zu Bebraham: Kann i mal dei Cebra ham?  
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(