HTML-теги в RTL-формах - PullRequest
       3

HTML-теги в RTL-формах

2 голосов
/ 30 сентября 2011

Я храню некоторые строки языка RTL, в которые встроены некоторые теги HTML, в БД.Когда я повторяю эти строки на странице HTML, они отображаются правильно.Однако, когда я помещаю эти же строки в <textarea>, теги HTML все перепутаны.

Ниже приведен пример (вам нужно скопировать и вставить его в файл HTML).Как вы можете видеть, теги корректно отображаются в <div>, но полностью запутаны в <textarea>.

Кто-нибудь знает, как гарантировать, что теги даже визуально выглядят правильно?Я помещаю этот текст в текстовую область для редактирования, поэтому он должен быть правильным.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<html dir="ltr">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<div dir="rtl">اسحب هذه الرسالة إلى اعلى الصفحة و <strong><a href="javascript:void(0);" id="demo-start">اضغط هنا</a></strong> لتبدأ.</div>

<br />
<textarea dir="rtl" rows="12" cols="50">اسحب هذه الرسالة إلى اعلى الصفحة و <strong><a href="javascript:void(0);" id="demo-start">اضغط هنا</a></strong> لتبدأ.</textarea>

</body>
</html>

Примечание
Почему-то я считаю, что это связано с &lrm; или &rlm; Марк, но я понятия не имею, как.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Измените атрибут dir textarea на ltr.Он будет хорошо отформатирован.

jsfiddle обновленной разметки.

0 голосов
/ 17 января 2017

Если вы не уверены в содержании вашей текстовой области, вы можете использовать dir="auto" в своей текстовой области. Это заставит браузер отображать текст LTR или RTL на основе первого сильного символа.

Оба они правильно отобразят внутренний текст:

<textarea dir="auto">This is an LTR line.</textarea>
<textarea dir="auto">זוהי שורת ימין לשמאל.</textarea>

См. JsFiddle здесь

Единственная проблема, с которой вы можете столкнуться - это смешанные строки; если один из ваших входных данных отображает хотя бы один сильный символ на английском языке, за которым следует текст RTL, текстовое поле будет отображать LTR, в котором остальная часть строки будет отображаться как искаженная.

Если вы столкнулись с этой проблемой, вам придется работать с кодом javascript (или back-end), чтобы вычислить большинство сильных символов в вашей строке, и присоединить dir="ltr" или dir="rtl" соответственно.

В большинстве случаев установка dir = "auto" в ваших текстовых полях должна работать в большинстве случаев.

...