我正在处理一些包含<textarea>
的HTML。目前,我正在测试基于LTR
和RTL
的混合字符的输入,例如"abcأبجABC"
。
<div class="mycomment" dir="RTL">
<form method="get" action="{$self}">
<input type="hidden" name="Id" value="{$entry}" />
<textarea name="comment" class="commentarea"/></textarea>
<br />
<input class="button" type="submit" value="{$postlink}" />
</form>
</div>
在RTL
模式下,字符串的显示是正确的,但键盘导航不正确。具体来说,在浏览英语和阿拉伯语字符串部分时,它没有遵循正确的顺序。
我有什么想法可以绕过或解决这个问题?
答案 0 :(得分:1)
不幸的是,根据规格,键盘导航可能是“正确的”。当试图通过混合方向单词,键盘快捷键(如 Ctrl + &gt; )来逐字跳转时,根据字符的方向性开始改变方向在光标的当前位置下 - 而不是从导航的角度将整个字符串视为单向。
但是,当您考虑在输入混合模式句子时计算机需要如何解释所有其他键击时,这是可以理解的。
如果您开始输入LTR
个字符,则预计它们会从左向右移动(每个后续字符都显示在最后一个字符的右侧)。但是,如果您开始输入RTL
个字符,则您希望它们从右向左行进(每个后续字符都显示在最后一个字符的左侧)。
这样想:
Ctrl + &gt; 并不意味着“走右一个字” - 这意味着“转到下一个字”。在RTL
环境中, next 字是 left - 因此键盘会向您跳转。
Next ,实质上与 bytes 在内存中的保存顺序有关,而不是与字符的顺序相关显示在屏幕上。无论一个单词是从屏幕的右侧还是左侧开始,字符都按顺序保存在内存中,从单词的开头开始,到单词的结尾结束。
换句话说: Ctrl + &gt; 以字节顺序行进,而不是 display-order
那么 - 回到你如何克服它的问题......
除非您要编写一些相当复杂的JavaScript(包含其自身的一系列挑战和麻烦)来改变键盘导航在您的盒子中的工作方式,否则没有好办法“修复”它。但是,如果您认为它会对您的客户产生负面影响,您可以尝试以下备选方案:
LTR
和RTL
文本,则可能会在其他应用程序中定期执行此操作。这意味着他们可能习惯于这一系列问题,因为它是一组标准问题。如果他们做了很多 - 他们可能已经有了他们习惯的解决方法 - 你将更改修复它可能实际上伤害他们的生产力。答案 1 :(得分:0)
其实你不能这样做。 作为希伯来语的人,我可以告诉你,这个领域存在很多问题,特别是当你混合RTL和LTR语言或有时候数字时。 你无能为力。有时浏览器可以处理它,有时它不能。 例如,在Chrome中使用 Ctrl 键在希伯来语文本中更快地移动时,左右键的方向会改变为相反的方向。
答案 2 :(得分:0)
您需要做的就是添加div样式:
<div style="direction:ltr">
<textarea id="geometry" class="form-control" placeholder="Lat lon" rows="3"></textarea>
</div>