1990metallica: Kein keyupEvent ausgelöst bei drücken der Backspace-Taste

Beitrag lesen

das ist jetzt nämlich genau mein problem ..

eigentlich soll der rand des feldes wieder schwarz werden wenn es leer ist

Das musst du in deine Funktion einbauen. Was soll die Schleife den bewirken?

Die Zeilen sind auch nicht sinnvoll:

if((formFieldID == "[object KeyEvent]") || (formFieldID == "[object KeyboardEvent]"))

{
                formFieldID = formFieldID.target.id;
        }
        if(formFieldID == "[object Event]")
        {
                formFieldID = formFieldID.srcElement.id;
        }


> >   
> > Du prüfst hier auf die Stringumsetzung eines Objektes, was nicht sehr zuverlässig ist.  
> >   
> > Zuverlässiger wäre es, wenn du auf die Eigenschaft testen würdest.  
> >   
> > ~~~javascript

var element = formFieldID.target || formFieldID.srcElement;  

> > formFieldID = element.id;  
> > 

Wobei ich formFieldID einen schlechten Namen für das Eventobjekt halte.

Struppi.

dankeschön für die Tipps :)
die for-schleife prüfte jedes zeichen, damit z.b. 1e+34 nicht als zahl interpretiert wird (exponentenschreibweise)
sobald nur ein falsches zeichen auftaucht wird der border rot und die schleife birch ab (eine weitere prüfung ist ja nicht sinnvoll bzw. würde vorhandene fehler überschreiben, wenn danach noch eine zahl auftaucht)

habe es nun folgendermaßen umgesetzt

function checkFormFieldIsPositiveInt(formFieldID)
{
var element = formFieldID.target || formFieldID.srcElement;
formFieldID = element.id;

if(document.getElementById(formFieldID).value == "")
{
  document.getElementById(formFieldID).style.border = "thin solid #000000";
}
else
{
for(i = 0; i < document.getElementById(formFieldID).value.length; ++i)
{
alert('Event ausgelöst');
if((document.getElementById(formFieldID).value.charAt(i) == ".") || (document.getElementById(formFieldID).value.charAt(i) == ",") || ((document.getElementById(formFieldID).value.charAt(i)  < "0") || (document.getElementById(formFieldID).value.charAt(i) > "9")))    {
   document.getElementById(formFieldID).style.border = "thin solid #FF0000";
break;
}
else if((document.getElementById(formFieldID).value.charAt(i) == " ") || (document.getElementById(formFieldID).value.charAt(i) == "") || (document.getElementById(formFieldID).value == ""))
{
document.getElementById(formFieldID).style.border = "thin solid #000000";
}
else
{
document.getElementById(formFieldID).style.border = "thin solid #000000";
}
}
}
}


>   
  
noch eine ergänzug zum namen formFieldID und zum event-objekt  
  
die funtktion bearbeitet nur das feld mit der übergebenen id.  
das event-object enthält die auslösende id (zugriff variiert jenach browserr)