Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

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

  • Autor

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

  • Autor

Super. :-) Mit .which bekomme ich die gewünschte Werte. Nochmals danke.

Ich arbeite übrigens mit FF 5.0 und IE 9.0.

Ich poste nachher mal die fertige Lösung.

Gruß

Boro

.keyCode vs. .wich must du in deiner Lösung beachten. Wenn einer deiner User mit nem IE daherkommt (nicht unwahrscheinlich, wenn du auf MS-Systemen entwickelst), kannst du mit .wich nicht viel anfangen.

  • Autor

Hmm, das kann ich nicht bestätigen. Habe es gerade mit den beiden o.g. Browser getestet und erhalte auch mit dem IE 9 das richtige Ergebnis.

Aber ich behalte es mal im Hinterkopf.

Bearbeitet von Boro

  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.