其实我的问题很小.. 你需要眼镜才能看到它 :-)
。好的,请执行以下操作:
- 运行代码片段
- 将
..!
写入文本区域 - 然后在后面写一个空格
- 然后在后面写上
س
- 现在如您所见,
..!
中点之间的间距将被更改。
为什么?同样,问题确实可以忽略不计,但它让我很紧张。为什么当我设置文本区域的方向时(如rtl
),该文本区域的值将(一点点)改变?
这是我的代码:
$("body").on('input', 'textarea', function() {
var el = $(this);
var len = el.val().length;
// declare direction of comment in textarea
var x = /^[^a-zآ-ی]*[a-z]/i; // is ascii
var isAscii = x.test(el.val());
if(isAscii){
el.css("direction", "ltr");
} else {
el.css("direction", "rtl");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea>dynamic direction</textarea>
顺便说一句,为了更清楚我在说什么,下图是屏幕截图。如您所见,两种情况下的点数相同,但第二个更宽。为什么?
最佳答案
这是由于字符编码。当我们谈论 RTL 时,字符编码设置为 UNICODE,这是 ASCII 码(字母 + 符号)的超集。
用于波斯语、阿拉伯语、乌尔都语等的 RTL 脚本。
Unicode 在输入时占用更多空间。您可以阅读有关 RTL 和 Unicode 的更多信息 here
关于javascript - 为什么当我向其中写入波斯字符时,textarea 的值会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983216/