Erstellen einer gefälschten Textfläche

8

Für ein Projekt, an dem ich gerade arbeite, muss ich "divs" vor dem Textinhalt einer Textfläche anzeigen können:

Zuerst dachte ich, ich könnte einfach die divs mit absoluter Positionierung und Z-Index platzieren, aber das würde bedeuten, dass man den Text "pushen" müsste und sicherstellen sollte, dass der Benutzer diese ersten Leerzeichen nicht löschen kann, weder mit Rücktaste noch Strg + c noch ctrl + x noch löschen ... Es sah kompliziert aus, jeden möglichen Weg zu bekommen.

Nun versuche ich ein "div" zu verwenden, das so aussieht, als wäre es ein Textfeld, das ein editierbares "span" enthält, das den folgenden Text enthält:

Das funktioniert im Moment, aber es ist nicht perfekt, insbesondere in Bezug auf: Fokus (Klicken Sie irgendwo auf das äußere div sollte den Cursor in der Textspanne *) anzeigen, und es scheint zu brechen, wenn ich die Textspanne entleere.

Irgendwelche Ideen, wie Sie das beheben können? Ich bin offen für Vorschläge, auch wenn ich die Struktur meiner gefälschten Textarea ändern muss.

Es sollte in allen wichtigen (aktuellen) Browsern funktionieren und kann jQuery verwenden.

  • $('#outerDiv').bind('click', $('#outerDiv span.text').focus()); scheint in Chrome zu funktionieren, aber nicht in Firefox.
Manu 21.02.2012, 09:16
quelle

1 Antwort

5

Was ich tun würde, ist folgendes:

  1. Ihr enthaltendes Element (der Texteditor) sollte ein Block-Level-Element sein. Es ist nicht editierbar.
  2. Ihre Tags sollten folgendermaßen aussehen: Ein Container, der float s links und inline-block oder float ed untergeordnete Elemente enthält.
  3. Ein nicht floatendes Blockelement (wichtig), das contenteditable ist.

Endergebnis:

%Vor%

Wenn Sie viele Tags haben, werden sie in die nächste Zeile eingefügt. Text im editierbaren Element wird auch um die Tags gelegt.

Wenn Sie auf die Tags klicken, wird der Fokus des bearbeitbaren Elements nicht angezeigt, aber Sie können das mit JavaScript beheben.

Hier ist ein Beispiel, das ich aufgepeppt habe . Funktioniert in Safari / Chrome / Firefox. Internet Explorer nicht getestet, aber es sollte gut funktionieren.

    
RikkusRukkus 21.02.2012, 10:38
quelle

Tags und Links