javascript - 为什么当我向其中写入波斯字符时,textarea 的值会发生变化?

标签 javascript jquery html css regex

其实我的问题很小.. 你需要眼镜才能看到它 :-)。好的,请执行以下操作:

  1. 运行代码片段
  2. ..!写入文本区域
  3. 然后在后面写一个空格
  4. 然后在后面写上س
  5. 现在如您所见,..! 中点之间的间距将被更改。

为什么?同样,问题确实可以忽略不计,但它让我很紧张。为什么当我设置文本区域的方向时(如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>

顺便说一句,为了更清楚我在说什么,下图是屏幕截图。如您所见,两种情况下的点数相同,但第二个更宽。为什么?

enter image description here

最佳答案

这是由于字符编码。当我们谈论 RTL 时,字符编码设置为 UNICODE,这是 ASCII 码(字母 + 符号)的超集。

用于波斯语、阿拉伯语、乌尔都语等的 RTL 脚本。

Unicode 在输入时占用更多空间。您可以阅读有关 RTL 和 Unicode 的更多信息 here

关于javascript - 为什么当我向其中写入波斯字符时,textarea 的值会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983216/

相关文章:

html - 将图像放置在 DIV 底部和外部的问题

javascript - 在 HTML 和内部 CSS 中使用 javascript

javascript - 将函数绑定(bind)到 jPlayer 的 "next"控件

java - 将 HTML 符号转换为 Java 符号

javascript - 如何从引导箱内的通配符 id onclick 事件?

javascript - jquery 可见性选择器

html - 如何使3个文本框在同一行并居中对齐

javascript - jQuery 移动 slider handle - 停止拖动但允许轨道选择

javascript - 找不到数据时隐藏和显示报告区域

javascript - 按 F5 后首先触发 Youtube iframe API