Robert: Scrollen eines Input Feldes

'Scrollen' eines Input Feldes

Hallo zusammen.

Ich versuche gerade herauszufinden, ob man ein Inputfeld 'scrollen' kann. Meine bisherigen Versuche mit focus(), blur(), setSelectionRange(), selectionStart & selectionEnd, die ich hier im Forum oder im Artikel zum BBCODE gefunden hatte, waren leider nicht erfolgreich, was aber durchaus auch an Unfähigkeit meinerseits liegen kann.

Der Hintergrund ist folgender:
In einer Touchscreen-Lösung, die auf HTML basiert (und mit Firefox läuft) ist - da es ja ein Touchscreen ist - keine Tastatur angeschlossen, d.h. alle Eingaben in einem Formular müssen über den Touchscreen selbst ausgeführt würden, also durch eine eingeblendete Tastatur und Einfügen der Buchstaben/Zahlen per Javascript.
Das funktioniert auch ohne Probleme mit z.B. input.value += buchstabe, allerdings taucht dann dort das Problem auf, dass das Inputfeld nicht mitscrollt, wenn der eingegebene Text länger als die Breite des Feldes ist. Im Gegenteil, das Inputfeld springt sogar immer an den Anfang des Textes zurück, wenn ein neuer Buchstabe eingegeben wird, und das Feld zuvor per (echter) Tastatur weitergescrollt wurde (wenn nicht per Hand weitergescrollt wurde, bleibt es einfach am Anfang stehen und jede weitere Eingabe wird 'blind' in das Textfeld geschrieben).

Wenn ich z.B. input.setSelectionRange(input.value.length, input.value.length); ausführe, wird der Cursor zwar brav an das Ende des Textes gesetzt, was mir allerdings nicht viel bringt, da der Inhalt mit an die Stelle des Cursors gescrollt wird und der Text ja sowieso per += angehängt wird und nicht von der Cursorposition abhängt (was in Zukunft vielleicht ein Thema wird, aber momentan nicht die Problemstellung ist).

Daher nochmals die konkrete Frage:
Ist es möglich - und wenn ja wie - den Inhalt eines Input Feldes im Firefox 2 per Javascript so zu scrollen, wie es standardmäßig bei einer Tastatureingabe geschieht?

Falls nicht, was ich derzeit befürchte, hat jemand eine Idee zu einem Workaround?

Vielen Dank im Voraus.

  1. Falls nicht, was ich derzeit befürchte, hat jemand eine Idee zu einem Workaround?

    missbrauche eine textarea dafür oder dimensioniere die eingabefelder entsprechend groß

    1. missbrauche eine textarea dafür oder dimensioniere die eingabefelder entsprechend groß

      Schwierig. Das Feld beinhaltet E-Mail-Adressen, wo ich a) natürlich nicht die Länge weiß und b) es durchaus auch mehrere sein können.

      Gab es bei der Textarea die Möglichkeit zum Scrollen per Javascript? Meine in den Forenbeiträgen hier gelesen zu haben, dass das Verhalten ähnlich/gleich wie bei Input ist (außer dass man natürlich auch auf einem Touchscreen hier per Hand scrollen könnte, da die Scrollbalken vorhanden sind. Trotzdem immer noch keine zufriedenstellende Lösung :().

      1. Hi,

        missbrauche eine textarea dafür oder dimensioniere die eingabefelder entsprechend groß

        Schwierig. Das Feld beinhaltet E-Mail-Adressen, wo ich a) natürlich nicht die Länge weiß und b) es durchaus auch mehrere sein können.

        Dann nimm ein "normales" Element, fange darauf die entsprechenden Events ab, und stelle die "Eingabe" dann als Textinhalt dar.
        Damit bekommst du zwar keinen Cursor (es sei denn, du emulierst auch noch einen solchen), aber das Element waechst automatisch mit der Eingabe mit.

        Gab es bei der Textarea die Möglichkeit zum Scrollen per Javascript?

        Ja. Und gibt es sogar noch.

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."