3 回答
不幸的是,根据规范,键盘导航可能是“正确的”。当尝试遍历混合方向的单词时,键盘快捷键(例如Ctrl+ >)从一个单词跳转到另一个单词,根据光标当前位置下字符的方向性开始改变方向 - 而不是将整个字符串视为单向 from导航的立场。
但是,当您考虑计算机在输入混合模式句子时需要如何解释所有其他击键时,这是可以理解的。
如果您开始输入LTR
字符,您希望它们从左到右移动(每个后续字符出现在最后一个字符的右侧)。但是,如果您开始键入RTL
字符,您希望它们从右向左移动(每个后续字符出现在最后一个字符的左侧)。
这样想:
Ctrl+>并不意味着“向右走一个词”——它的意思是“走下一个词”。在一个RTL
环境中,下一个词在左边——所以键盘会跳转到那个方向。
Next本质上与字节在内存中的保存顺序有关,而不是与字符在屏幕上显示的顺序有关。无论单词是从屏幕的右侧还是左侧开始,字符都会按顺序保存在内存中,从单词的开头开始,到单词的结尾。
换句话说:Ctrl+以byte-order>传播,而不是display-order。
所以 - 回到你如何克服它的问题......
除非您要编写一些相当复杂的 JavaScript(其中包含自己的一系列挑战和麻烦)来改变键盘导航在您的框中的工作方式,否则没有“修复”它的好方法。但是,如果您认为这会对您的客户产生负面影响,您可以尝试以下替代方案:
- 提供培训。了解古怪键盘技巧的来龙去脉,并教给您的用户。(我知道,我知道,很多工作,你可能没有时间/预算)。
- 信任您的用户。很有可能,如果您的用户在您的应用程序中输入混合文本
LTR
,这也是他们在其他应用程序中经常执行的操作。这意味着他们可能已经习惯了这组问题,因为这是一组标准问题。如果他们经常这样做——他们可能已经有了他们习惯的解决方法——而你改变它来修复它实际上可能会损害他们的生产力。RTL
- 记录它,并提交功能请求。如果您认为给定的浏览器或供应商(如微软)应该以不同的方式实现这一点,请积极参与他们的用户社区并推动更新、补丁和功能添加。这就是软件世界变得更好的方式——它并没有把成为变革推动者的负担仅仅放在你的组织身上,或者更糟的是——放在你身上。
其实你做不到。作为一个说希伯来语的人,我可以告诉你,这方面有很多问题,尤其是当你混合 RTL 和 LTR 语言或有时是数字时。你无能为力。有时浏览器可以处理它,有时它不能。例如,在 Chrome 中,当您Ctrl在希伯来语文本中使用键加快速度时,左右键的方向会变为相反。
您需要做的就是添加带有样式的 div:
<div style="direction:ltr">
<textarea id="geometry" class="form-control" placeholder="Lat lon" rows="3"></textarea>
</div>