"dir"-输入RTL但有LTR测量数据| “فثسف 3 cm dboc”应该是
"dir"-Input RTL but with LTR measurement data | "فثسف 3 cm فثسف" should be (فثسفy 3 cm فثسف)
有人知道这是浏览器、windows 语言还是一般问题吗?
我在我的电脑上安装了第二种语言 "Arabic (Saudi Arabia) Arabic (101) keyboard"。
如果我输入像 "test 3cm test" 这样的文本(对于“3cm”,我切换到德语键盘)它或多或少是正确的。 - dir="rtl"
.
当我将 ltr
用作 dir
时,当我将其复制并粘贴到此处时看起来像。
ova 3cm ova
现在是(主要)问题。
当我在 3
和 cm
之间添加 space 时,反之亦然。
你知道是否可以像我下面的图片修改那样用JavaScript或HTML来处理?
还是语言行为?
提前致谢! :-)
我尝试了什么?
- 在
dir
中使用auto
<html dir="rtl" lang="ar">
<body>
<input type="text" dir="auto" style="text-align: left;" value="فثسف 3 cm فثسف" />
</body>
</html>
还有这个。
<html dir="rtl" lang="ar">
<body>
<input type="text" dir="auto" style="text-align: right;" value="فثسف 3 cm فثسف" />
</body>
</html>
value
来自这个工作流程。
- 切换到阿拉伯语(RTL 语言)
- 写入"test "
- 切换到德语(LTR 语言)
- 写“3厘米”
- 切换到阿拉伯语(RTL 语言)
- 写入"test"
- Input中的Strg + A,放入
value="STRG + V"
问题是你准备好走多远。你可以用 <span>
标签包裹 3 cm
,然后它将独立于它周围的一切进行布局,
<div dir="rtl">فثسف <span dir="ltr">3 cm</span> فثسف</div>
或者您可以插入 ‎
和 ‏
,或者一些方向覆盖字符:
<div dir="rtl">فثسف ‎3 cm‏ فثسف</div>
我将@alex-cohn 的想法与 ‎
and ‏
标签一起使用并开发了我需要的东西
var ltrMarkThere = false;
document.getElementById("test").addEventListener("keydown", function testKey(e) {
if(e.key.match(/[0-9]/)) {
document.getElementById("test").value += "\u202a";
ltrMarkThere = true;
} else if(ltrMarkThere && e.key.charCodeAt(0) > 127) {
document.getElementById("test").value = document.getElementById("test").value.replace(/( ?)$/, "\u202c");
ltrMarkThere = false;
}
});
<html dir="rtl" lang="ar">
<head>
</head>
<body>
<input id="test" type="text" style="direction: rtl; text-align: right;" autocomplete="off" autofocus="true" value="فثسف 3 cm فثسف" />
<!-- There is a hidden UTF8 Right-to-left-mark and hidden UTF8 Left-to-right-mark which allows to have it like this -->
</body>
</html>
有人知道这是浏览器、windows 语言还是一般问题吗?
我在我的电脑上安装了第二种语言 "Arabic (Saudi Arabia) Arabic (101) keyboard"。
如果我输入像 "test 3cm test" 这样的文本(对于“3cm”,我切换到德语键盘)它或多或少是正确的。 - dir="rtl"
.
当我将 ltr
用作 dir
时,当我将其复制并粘贴到此处时看起来像。
ova 3cm ova
现在是(主要)问题。
当我在 3
和 cm
之间添加 space 时,反之亦然。
你知道是否可以像我下面的图片修改那样用JavaScript或HTML来处理?
还是语言行为?
提前致谢! :-)
我尝试了什么?
- 在
dir
中使用
auto
<html dir="rtl" lang="ar">
<body>
<input type="text" dir="auto" style="text-align: left;" value="فثسف 3 cm فثسف" />
</body>
</html>
还有这个。
<html dir="rtl" lang="ar">
<body>
<input type="text" dir="auto" style="text-align: right;" value="فثسف 3 cm فثسف" />
</body>
</html>
value
来自这个工作流程。
- 切换到阿拉伯语(RTL 语言)
- 写入"test "
- 切换到德语(LTR 语言)
- 写“3厘米”
- 切换到阿拉伯语(RTL 语言)
- 写入"test"
- Input中的Strg + A,放入
value="STRG + V"
问题是你准备好走多远。你可以用 <span>
标签包裹 3 cm
,然后它将独立于它周围的一切进行布局,
<div dir="rtl">فثسف <span dir="ltr">3 cm</span> فثسف</div>
或者您可以插入 ‎
和 ‏
,或者一些方向覆盖字符:
<div dir="rtl">فثسف ‎3 cm‏ فثسف</div>
我将@alex-cohn 的想法与 ‎
and ‏
标签一起使用并开发了我需要的东西
var ltrMarkThere = false;
document.getElementById("test").addEventListener("keydown", function testKey(e) {
if(e.key.match(/[0-9]/)) {
document.getElementById("test").value += "\u202a";
ltrMarkThere = true;
} else if(ltrMarkThere && e.key.charCodeAt(0) > 127) {
document.getElementById("test").value = document.getElementById("test").value.replace(/( ?)$/, "\u202c");
ltrMarkThere = false;
}
});
<html dir="rtl" lang="ar">
<head>
</head>
<body>
<input id="test" type="text" style="direction: rtl; text-align: right;" autocomplete="off" autofocus="true" value="فثسف 3 cm فثسف" />
<!-- There is a hidden UTF8 Right-to-left-mark and hidden UTF8 Left-to-right-mark which allows to have it like this -->
</body>
</html>