我有一个ASP.NET v4表单,其中包含textarea
元素,dir
字段设置为auto
:
<form runat="server">
<textarea id="mytext" name="mytext" dir="auto" style="width: 400px; height: 300px; margin: 10px;"></textarea>
<input type="submit" value="Submit">
</form>
将Windows操作系统的语言设置为阿拉伯语后,在文本框中输入阿拉伯语文本时,文本的方向按预期从右向左。此外,当提交表单并检查代码隐藏中的Request.Form["mytext"]
时,除了最后一句末尾(即最左边)的句点字符已移至开头之外,文本显示正确第一句话(即最右边)。
E.g(不使用真正的阿拉伯语单词,因为我不懂语言):
之前。بثبصبصببص.بثبثبثبصيص.ثاثقاثلثبص
在بثبصبصببص.بثبثبثبصيص.ثاثقاثلثبص。
知道为什么会这样,以及我能做些什么来阻止它?
答案 0 :(得分:3)
如果我正确理解了您的问题并且您担心文字的顺序不正确,那么您应该知道何时在rtl文本框中输入文本并正确查看,文字的顺序正确
在调试器中,您最初只看到.
,因为在调试器中,文本框从左到右。它足以保存收到的文本,然后在显示时,在具有从右到左样式的文本框中显示文本。
要正确输入سلام علیکم.
,请先按顺序输入س
然后ل
然后ا
,......最后.
:
س ل ا م 空间 ع ل ی ک م
它会在dir="rtl"
或dir="auto"
的文本框中正确显示,如下图所示:
<html>
<head><title>auto-rtl-ltr</title></head>
<body>
<input type="text" dir="auto" value="سلام علیکم."/>
<input type="text" dir="rtl" value="سلام علیکم."/>
<input type="text" dir="ltr" value="سلام علیکم."/>
</body>
</html>
同样作为测试,您可以将سلام علیکم.
粘贴到记事本或文本框中,然后使用左( Ctrl + Shift )和右( Ctrl < / kbd> + Shift )在ltr和rtl之间切换并查看结果。