Kann ich das in eine Eingabe eingegebene Zeichen bei Tastendruck bedingt ändern?

Ist es möglich, das eingegebene Zeichen auf Tastendruck zu ändern, ohne es manuell zu tun?

Zum Beispiel, wenn ich Großbuchstaben erzwingen möchtebased on some condition, es wäre schön, Folgendes zu tun:

function onKeypressHandler(e)
{
    if ( condition )
    {
        e.which -= 32;
    }
}

Aber das funktioniert natürlich nicht.

HINWEIS Das istnich ein auf ganzer Linie Großbuchstaben, abernu bestimmte Zeichen.

Vielleicht möchte ich sagenif ( e.which >= 97 && e.which <= 102 ) oderif ( Wind.Direction == 'South' ) oder was auch immer - die Bedingung selbst ist nicht wichtig, aberDie Großbuchstaben müssen nur für das aktuelle Zeichen gelten. nicht die gesamte Eingabe.


Ich kann es durch manuelles Anhängen des geänderten Zeichens tun, aber dies ist eine hässliche und unordentliche Art und Weise, und wahrscheinlich langsamer, als es sein könnte.

function onKeypressHandler(e)
{
    if ( condition )
    {
        $j(this).val( $j(this).val() + String.fromCharCode( e.which - 32 ) );
        return false;
    }
}

Ein spezifischer Fehler bei dieser Methode - Wenn Sie den gesamten Eingabetext auswählen und einen Schlüssel eingeben, wird der vorhandene Inhalt nicht entfernt, sondern lediglich an den Inhalt angehängt, den der Benutzer entfernen möchte. (Müsste untersucht werden, ob ein ausgewählter Text gefunden wurde, um das Problem zu lösen, was diesen Text noch hässlicher macht.)

Kann jemand eine bessere Lösung anbieten?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage