Die Erkennung drop in das textarea mit Javascript
Alles was ich brauche ist in der Lage sein zu erkennen, wenn der text fällt in eine Textarea. Ich habe dann nehmen Sie diesen text und machen Sachen mit ihm und deaktivieren Sie die textarea-Komponente. Möglicherweise gibt es viele dieser Texteingabefelder und eine sehr hohe UI Erwartungen, so dass polling ist der Letzte Ausweg.
IE, "onfocus" der trick funktioniert, da dieses Ereignis wird ausgelöst, nachdem der Benutzer das Zeugs in die textarea.
Für Firefox, ich kann nicht finden, ein Ereignis, das funktioniert. Ich habe versucht, onmouseup und onchange.. weiß nicht, was anderes zu versuchen von dort aus. Ich würde es hassen zu müssen, eine Umfrage der textarea für den Inhalt. Hilfe sehr geschätzt. Danke.
Edit: Zur Klarstellung, "dropped" bedeutet, dass der Benutzer markiert den text (in der Regel) von der Seite, aber es spielt keine Rolle, wo, zieht es, und wirft es in die textarea. Dies ist nicht das gleiche wie Strg+V oder Rechtsklick einfügen (die zwei verschiedenen Methoden der Erkennung, BTW), oder (offensichtlich) die Eingabe in die textarea. Speziell, es ist der "drop" - Aspekt des drag-and-drop. Ich weiß wirklich nicht, wie sonst, um phrase es.
Habe ich das Gefühl diese Frage wurde angegeben, ziemlich genau. Humor mich, davon ausgehen, dass ich gemeint die anderen Vorgänge auf eine textarea, die Sie alle gewählt haben, zu teilen. Wenn ich meinte, "einfügen", glaubst du nicht, ich hätte erwähnt etwas über einfügen in den Titel oder den Inhalt meiner Frage? Gleiches gilt für Eingabe in einer textarea. Aber vielleicht werden Sie Sie alle einfach nicht wissen, die mich gut genug, um zu wissen, dass ich Schreibe, was ich meine, eher als polnische Typisierung Dinge nur etwas im Zusammenhang zu dem, was ich meine.
- Sam, könnten Sie versuchen, weniger ätzend? Menschen don ' T haben, Ihnen zu helfen. Mein Vorschlag ist, wickeln Sie die Ereignisse, die Sie erwähnt mit dem ` - Zeichen zu machen, zeichnen sich. Ihre Gewinnchancen liegen bei der Abfrage der element.
- Ja, ich werde weniger ätzend. Es ist frustrierend, wenn die Leute nicht Lesen die Frage.
- Die Frage wäre viel klarer, wenn Sie würde einfach erwähnt per "drag und drop". 'Drop' auf seine eigene, könnte eine beliebige Anzahl von Bedeutungen; drag-and-drop in eine textarea ist extrem selten-Bedienung für die meisten web-Nutzer.
- Lol sorry, ich dachte, Sie sagte, Sie versucht, onkeyup, tut mir sehr Leid.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Firefox, das funktioniert für mich:
Funktioniert nicht in Safari, allerdings. Habe nicht versucht, DH.
Polling zu sein scheint der einzige Weg zu gehen.
Wenn eine Drag+Drop-operation gestartet wird, die der browser, es scheint, um zu kündigen, alles andere, was Los ist. Sie können bezeugen, indem Sie "onmouseover" - Veranstaltungen auf, die etwas auf die Seite, dann beginnen Sie eine DnD-operation und ziehen über Sie. Die Ereignisse werden nicht ausgelöst.
Scheint es nur ein Zufall, wie der browser intern "ziehen und ablegen", die es verursacht onfocus() ausgelöst werden, für die textarea im IE und Safari. Ich bezweifle, definiert in der W3-Spezifikation... nicht, dass es darauf ankommt, W3 ist Mist, und außerdem ist niemand hält Sie es vollständig.
In meiner Frage, ich setzte den Luxus der Entleerung aus der textarea nach jedem Gebrauch, so dass ich das Gefühl, dass polling für: textarea.Wert.Länge>0 ist, kaum Kosten und sollte nicht viel Leistung Anliegen.
Aber, ach, es konkret zu tun hat mit dem ablegen von Inhalten in eine textarea.
Down-mod Weg, um zu beruhigen Ihre Schmerzen.
Wenn Sie möchten, dass Ihre textarea reagieren zu text wird, gelöscht, eingefügt oder eingegeben, einzige Lösung wäre ein button. Auch eine timer-polling-der Inhalt wird dir nicht helfen.
Sie erwähnen, dass Sie möchten, dass der Benutzer in der Lage sein, um text in die textarea. Und Sie erwähnen, dass Sie möchten, um den text zu löschen, sobald das Ereignis ausgelöst wird. Es gibt keine Möglichkeit für den browser, um zu wissen, dass der Benutzer fertig mit der Eingabe. Sie müssen sich auf eine bestimmte Aktion.
Nun für den drop oder paste, können Sie sich auf das mouseup-und keyup-Ereignisse, um zu erkennen, dass.
Was meinst du mit "gelöscht"? Sprichst du von einem "einfügen" (^V) - operation? Wenn dem so ist Aron ' s Antwort ist zwar korrekt, erhalten Sie keydown/keyup (und der Wert wird dann gut lesbar im keyup).
Einen generischen Rückruf, passiert auf jedem update, um ein input ist 'onchange' - Sie könnten versuchen, die. Beachten Sie, dass bei der Eingabe, es wird nicht aufgerufen, bis Sie fertig sind und unfocus der Eingabe, so dass, wenn Sie instant-updates auf beiden eingeben und andere Formen der Eingabe, müssen Sie noch 'onkeyup' als gut.
Bearbeiten Klärung re: IMO 'onchange' gefeuert werden sollte, wenn eine drag-and-drop-Ursachen-Inhalte werden Hinzugefügt, um einen text-Bereich; ich betrachte es als ein browser-bug, dass es nicht (im Firefox zumindest). Kann ich nur Zustimmen, in diesem Fall, dass polling ist alle, die Sie verlassen haben.