Zum Inhalt springen

ASP.NET & Jscript - Bei onkeypress das eingegebene Zeichen/ascii-Code als Parameter


Empfohlene Beiträge

Hallo,

ich komme bei einer eigentlich simplen Aufgaben einfach nicht auf das richtige Syntax bzw. das richtige Objekt. Mein Ziel ist es ein keypress-ereignis clientseitig via javascript abzufangen. Das soll später dazu verwendet werden um Fehleingaben zu vermeiden.

Den größten Teil habe ich schon, es fehlt aber noch das eingegebene Zeichen.

Hier mein bisheriger Code:


<asp:TextBox ID="txtanzeige" runat="server" style="margin-left: 4px; text-align: right;" 

Width="196px" Height="28px" CausesValidation="True"    


onkeypress="return(MeineJavafunktion(HIER_MUSS_DAS_OBJECT/EVENT_ALS_PARAMETER_HIN))" ClientIDMode="Static"

></asp:TextBox>

Die JavaScriptfunktion soll die Eingabe nachher anhand des Parameter validieren und true oder false zurückgeben. (Das bekomme ich aber selber hin)

Kann mir jemand einen Tipp geben wie ich an das eingebene Zeichen komme?

Mit "this" funktioniert es nicht und document.event.keycode ist an der Stelle scheinbar nicht verfügbar.

Danke im Voraus

Gruß

Jens

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

erstmal danke für die Antworten.

@etreu

Ja, das mit dem Eventhandler hab ich mir auch so vorgestellt, nur genau das bekomme ich leider nicht hin. Ich habe gestern noch ein wenig gebastelt und festgestellt das man das Event-Objekt scheinbar übergeben kann. Eine direkte Ausgabe des Parameters zeigt den Wert "[object KeyboardEvent]" an. Das scheint also grundsätzlich das gewünschte Objekt zu sein.

Nur ist der Wert der Eigenschaft .keycode dann immer null. Also entweder benutze ich die falsche Methoden/Eigenschaften oder die Übergabe des Objekts funktioniert nicht. (Erzeugt vlt. eine neue Instanz und enthält deshalb keinen Wert?)

Hier mal der Code, das Verhalten ist in den Kommentaren genauer beschrieben.

Vlt. siehst du ja den Fehler. :-)

Das ASP-Steuerelement in der Markup-Datei


<asp:TextBox ID="txtanzeige" runat="server" style="margin-left: 4px; text-align: right;" 

Width="196px" Height="28px" CausesValidation="True"

onkeypress="return(MeineJavafunktion(event))" ClientIDMode="Static"

></asp:TextBox>

Die JavaScriptfunktion

function MeineJavafunktion(DerParameter) 

{

    window.alert("Beginn JavaScript");

    //Die nächste Zeile gibt interessanterweise [object KeyboardEvent] aus

    window.alert(DerParameter);

    //Aber die nächste Zeile gibt leider immer nur 0 aus.

    window.alert("Der Wert ist " + DerParameter.keyCode);    

    window.alert("Ende JavaScript");

}

@lilith2k3

Danke für den Tip. Ich steh noch ziemlich am Anfang mit ASP.Net mit Themen wie Jquery und Ajax habe ich mich noch nicht beschäftigt. Erstmal die Grundlagen verstehen. :-)

Gruß

Boro

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie versprochen, die vollständige (aber leider nicht perfekte) Lösung:

Die Anforderung war das in ein Textfeld (für einen Taschenrechner) nur Zahlen eingeben werden dürfen. Alles anderen Eingaben sollen nicht zugelassen werden. Eine Hinweismeldung soll erstmal nicht erscheinen. Damit das klappt prüft die JavaScript-Funktion mit Hilfe eines regulären Ausdrucks ob es nur Zahlen (oder ein Backslash) ist.

Falls nein gibt die Funktion ein false zurück und die Eingabe wird damit verworfen (es passiert einfach nichts wen man die Taste drückt). Nicht so gut an dieser Lösung ist das alle anderen Tasten auch geblockt werden, u.a. die Pfeiltasten. Aber das kann man vermutlich mit einer Erweiterung des regulären Ausdruck hin bekommen. Wie und ob sich das ganze mit Frameworks/Jquery abbilden läßt konnte ich noch nicht rausfinden. Aber die Chancen das es möglich ist stehen nicht schlecht. :-)

Der Code für das ASP-Steuerelement in der Markup


<asp:TextBox ID="txtanzeige" runat="server" style="margin-left: 4px; text-align: right;" 

Width="196px" Height="28px" CausesValidation="True"

onkeypress="return(eingabepruefen(event))" ClientIDMode="Static" ontextchanged="txtanzeige_TextChanged1"

></asp:TextBox>

Der Quellcode in der JS-Datei

function eingabepruefen(pKeyevent) {

//Tricky: Nach dem Oder-Zeichen des regulären Ausdrucks ist das Backspacezeichen via copy & paste eingefügt.

//Innerhalb des Quellcode ist es nicht sichtbar, der Sucher berücksichtigt es aber trotzdem

//Schlecht: Die Pfeiltasten um sich innerhalb des Text zu positionieren funktionieren so ebenfalls nicht -> eventuell doch ASCII-Code abfangen?

    var Sucher = /\d|/;

    window.alert("Das Label sollte sich jetzt ändern");

    document.getElementById("ASPTextbox").value = "Hallo1";

    document.getElementById("HTMLTextfeld").value = "Hallo2";


    return Sucher.test(String.fromCharCode(pKeyevent.which));

}

Gruss

Boro

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...