我正在寻找将rtl和ltr语言放在textarea中的最优雅的解决方案:例如阿拉伯语和HTML一起。
The standards说不要使用css创建它:
direction: rtl;
unicode-bidi: embed;
这对我来说无效,因为html有嵌套文本问题。阿拉伯语与右边对齐,但html被破坏了。
有没有办法动态地做到这一点?该标准想要添加一个嵌套的span标签,但由于用户动态输入这个标签,我不知道如果没有检测到每个字符的结尾,这是怎么回事。
答案 0 :(得分:9)
由于textarea
的内容被视为纯文本,因此您不能在其中使用任何span
标记或任何其他标记,并且您不能将其任何部分设置为与其余部分不同(第一行或第一个字符除外,使用伪元素)。
但是,在纯文本级别,可以使用控制字符强制执行双向嵌入。假设您在整个元素上设置direction: rtl
(期望用户以从右到左的语言输入数据),用户可以键入U + 202A LEFT-TO-RIGHT EMBEDDING以输入从左到右的文本例如英文或HTML标记,然后通过键入U + 202C POP DIRECTIONAL FORMATTING结束此操作,返回到右到左模式。
由于大多数人不知道如何方便地输入这些字符,如果有的话,你可以在页面上找到它们的按钮:
<textarea id=msg name=msg rows=10 cols=40>
</textarea>
<br>
<button type=button onclick="append('\u202A')">→</button>
<button type=button onclick="append('\u202C')">←</button>
<script>
var msg = document.getElementById('msg');
function append(ch) {
msg.innerHTML += ch;
msg.focus();
}
</script>