2016-09-29 1 views
1

Ich habe eine sehr einfache Frage zum Schreiben in Textbereichen. Wenn ich das Verzeichnis dir = RTL für die Seite einstelle und auf Englisch schreibe, würde der Browser oder das Textfeld die Wörter von links nach rechts schreiben, wie jeder andere englische Autor, aber ich möchte, dass die Wörter von rechts nach links geschrieben werden. Kann mir bitte jemand helfen?Wie schreibe ich Englisch von rechts nach links in einem Textbereich

Vielen Dank im Voraus.

Aktuelles Verhalten: بشم-Test [diese] دجاج

Erwartetes Verhalten: بشم [diese] Test دجاج

Anmerkung: Ich schreibe von rechts

+0

Englisch ist keine RTL-Sprache. Das ergibt keinen Sinn. – Quentin

+0

''? oder möchtest du die Typisierung verehren? –

+0

Wenn ich Arabisch und Englisch eintippe, schreibt es richtig von rechts nach links, aber wenn ich zwei aufeinanderfolgende englische Wörter schreibe, schreibt es sie nach rechts, während ich möchte, dass sie sich wie die arabisch/hebräische Schreibrichtung verhalten. –

Antwort

3

Das Standardverhalten einer RTL-Textbox behandelt mehrere englische Wörter, die durch Leerzeichen getrennt sind, als "von links nach rechts", wodurch sie innerhalb der la als kleiner englischer Satz (LTR) dargestellt wird RTL-Text. Deshalb sehen Sie diese englischen Wörter von links nach rechts.

Um dieses Standardverhalten zu umgehen, können wir die Leerzeichen, die neutrale Zeichen sind, die ihre Direktionalität vom vorherigen Wort erben, abfangen und ein spezielles unsichtbares Unicode-Steuerzeichen mit der Bezeichnung Right-to-Left Mark (RLM) hinzufügen. Dieses Zeichen verhält sich wie ein arabisches Zeichen, hat aber keine visuelle Darstellung. Es wird einfach jedes Wort (egal welche Sprache) mit einem unsichtbaren arabischen Zeichen beginnen, das den Browser es auf der linken Seite des vorherigen Wortes rendern lässt.

Um RLM Zeichen hinzufügen, während Sie tippen:

function setWordOrder(e) { 
 
\t if (e.key == " ") { 
 
\t \t var textbox = document.getElementById("mytextarea"); 
 
\t \t textbox.value += "\u200F"; 
 
\t } 
 
}
<textarea id="mytextarea" style="direction: rtl" onkeyup="setWordOrder(event)"></textarea>

Wenn Sie diesen Text in einer Datenbank speichern können Sie die RLM Zeichen entfernen, bevor zu speichern, so dass Ihre Daten „rein“ ist. Wenn Sie später einen vorhandenen Text aus der Datenbank anzeigen möchten (ohne dass der Benutzer sie eingeben muss), können Sie RLM-Zeichen nach jedem Leerzeichen manuell hinzufügen, bevor Sie den Text auf dem Bildschirm anzeigen.

+0

Danke Mann wirklich gerettet den Tag: D –

0
<textarea dir="rtl"> 
</textarea> 
+0

Ich habe dies versucht und es hat nicht funktioniert –

0

Sie müssen links zu tun, 2 Sache Verwenden Sie Richtung: RTL für die richtige Ausrichtung

<input type="text" name="textbox" style="direction:RTL;"

dann einen JavaScript-Handler schreiben, die auf das Ereignis angehängt werden können: "onkeyup", die

function rtl(element) 
    { 
     if(element.setSelectionRange){ 
     element.setSelectionRange(0,0); 
    } 
    } 
    onkeyup="rtl(this); 

Scheck aus dem Snippet die Verschiebung der eingegebenen Zeichen links führt

function rtl(element) 
 
{ 
 
    if(element.setSelectionRange){ 
 
     element.setSelectionRange(0,0); 
 
    } 
 
}
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>

+0

Das Verhalten, wenn Sie von rechts nach links für jedes Wort bewegen, ist etwas ich möchte, aber ich möchte nicht die englischen Wörter umzukehren. Ich denke, wenn ich style = "direction: RTL;" es wird klappen.Ich werde es jetzt versuchen. –

+0

Okay, es hat nicht funktioniert. –

Verwandte Themen