Vollständige Eingabe-Validierung in onKeyDown

dadidom

Grünschnabel
Hi Zusammen,

es geht darum die Eingabe in einem Text-Feld nach bestimmten Regeln zu unterbinden.
Unter anderem sollen Textfelder (für numerische Werte) auf ein Maximum beschränkt werden. Dabei soll weiterhin die onKeyDown benutzt werden um Fehlerhafte Eingaben erst gar nicht im Textfeld an zu zeigen.

Das Problem hierbei sind nun die diversenen Konstellationen das Textfeld zu bearbeiten; der User stellt den Cursor mitten rein, markiert Bereiche und will die Überschreiben etc.
Gibt es eine Möglichkeit in der onKeyDown Funktion den Tastendruck vorab zu "simulieren" um dann den vollständigen Feldinhalt zu validieren, bevor er im Feld steht?

Viele Grüße und Danke schon mal
D
 
Du kannst doch mit Selection ermitteln, was genau der Nutzer gerade ausgewählt hat oder wo sich der Cursor gerade befindet. Dementsprechend kannst Du doch ermitteln, wie der Wert im Eingabefeld aussehen müsste, wenn der Nutzer jetzt da den neuen Buchstaben eingibt. Dabei musst Du allerdings auch noch ermitteln, was das für ein Tastendruck ist, also links, rechts, oben, unten, Escape, Enter ... rausfiltern. Allerdings gibt es eine Sache, bei der ich mir noch nicht ganz sicher bin, und dass ist jene Situation, in der etwas eingefügt wird über "Einfügen". Ich schau mal nach, wie sich das da verhält.
 
Ich habe es noch mal bearbeitet und man kann es jetzt hier finden. Um die Validierung zu ermöglichen, habe ich ein eigenes Ereignis namens "beforechange" eingefügt, was den alten und den neuen Wert übergeben bekommt. Dort kann man dann überprüfen, ob die neuen Daten gültig sind oder nicht.
Javascript:
$("input").on("beforechange", function (e, oldvalue, newvalue) {
  var value = parseInt(newvalue);
  if ( newvalue > 255 ) {
    e.preventDefault();
  }
});
 

Neue Beiträge

Zurück