JavaScript - mehrzeilige Textbox in prompt ()?

8

Gibt es trotzdem eine Textbox / Eingabefeld in prompt multiline?

    
dpp 31.08.2011, 10:06
quelle

3 Antworten

8

Nein, Browser erlauben nur eine einzeilige Eingabe für prompt() . Mit einer einfachen Änderung an der jQuery-Alarmdialog -Bibliothek könnten Sie mehrzeilige Eingaben erhalten Dort. Nimm jquery.alerts.js , suche nach <input type="text" size="30" id="popup_prompt" /> und ersetze sie durch <textarea rows="5" cols="30" id="popup_prompt"></textarea> . Das sollte ausreichen, wenn beim Aufruf von jPrompt() ein mehrzeiliges Eingabefeld angezeigt wird.

Bearbeiten : Wie Mulletfingers999 in einem Kommentar darauf hinweist, wurden jQuery-Alert-Dialoge zugunsten von jQuery UI-Dialogen . Dort können Sie auch einen "modalen" Dialog anzeigen, dieser Dialog kann jedoch beliebigen Inhalt haben - das bedeutet, dass ein <textarea> -Tag möglich ist, wenn Sie eine mehrzeilige Eingabe wünschen.

    
Wladimir Palant 31.08.2011, 10:16
quelle
2

Für so ziemlich jede benutzerorientierte Web-Anwendung in diesen Tagen werden Sie vermeiden wollen, klobige alte Dialoge wie alert() und prompt() zu verwenden. Fast jede Bibliothek, die Sie verwenden, sollte eine viel bessere Antwort haben. Jquery wäre in Ordnung, wie andere gesagt haben. Es wäre auch gut, daran zu denken, wie man eine Notwendigkeit für Modalität beseitigen könnte, indem man eine schlauere Schnittstelle entwirft.

Interessanterweise verwenden sie in Firefox bereits XUL und erfinden auf dieser Grundlage viele Benutzeroberflächen neu (anstatt sich auf die "allgemeinen Dialoge" des zugrunde liegenden Betriebssystems zu verlassen). Es gibt eine Vorlage für modale Dialoge in / source / toolkit / components / Eingabeaufforderungen / content / tabprompts.xml :

%Vor%

Was sie tun, ist nur die Elemente der Benutzeroberfläche zu verstecken, die sie nicht brauchen. Im Fall eines Aufrufs von prompt wird das Feld Benutzername erneut verwendet und die Kennwort- und Kontrollkästchenelemente werden ausgeblendet. Sie können dies in / source / toolkit / components / prompts sehen /src/CommonDialog.jsm#52 :

%Vor%

Da es mehr oder weniger HTML ist, ist die einzige Frage, was das Nicht-Standard-Tag <textbox> für die Benutzeroberfläche bedeutet. Die XUL-Steuerdokumentation informiert uns, dass es nur ein einzeiliger Eintrag ist, für den Sie <textarea> benötigen würden:

Ссылка

Ich dachte, es wäre "spaßig", die Implementierung in Chrom zusätzlich zu GTK zu betrachten. Nach einigen Durchforstungen durch die komplexen Wrapper von WebKit gelang es mir, chrom / src / chrome / browser / ui / gtk / js_modal_dialog_gtk.cc , speziell dieser Teil:

%Vor%

Die text_box wird mit gtk_entry_new() erstellt und die GTK-Dokumentation gibt an, dass GtkEntry "Ein einzeiliges Texteingabefeld" . Für die mehrzeilige Eingabe müssten Sie GtkTextView :

verwenden

Ссылка

Also gibt es deine Antwort nicht nur von "Kannst du?" aber die rauchenden Waffen von warum kannst du nicht (in ein paar populären Browserimplementierungen). Es sei denn, es gibt eine Möglichkeit, das XUL in Firefox mit einer Erweiterung irgendeiner Art zu überschreiben, die es durchaus geben mag! Ich überlasse es als Übung für den Leser. : P

    
HostileFork 31.08.2011 14:01
quelle
1

Verwenden Sie \ n in doppelten Anführungszeichen eingeschlossen ("\ n")

%Vor%     
Alex 31.08.2011 10:07
quelle

Tags und Links