当我写一个波斯字符时,为什么textarea的值会发生变化?

时间:2016-08-16 19:43:56

标签: javascript jquery html css regex

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

  1. 运行代码段
  2. ..!写入textarea
  3. 然后写一个空格
  4. 然后在其后面写س
  5. 现在如你所见,..!中点之间的空格将会改变。
  6. 为什么呢?同样,这个问题确实可以忽略不计,但这让我很紧张。为什么当我设置方向到textarea (如rtl时,该textarea的值将被更改(有点)

    这是我的代码:

    $("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

1 个答案:

答案 0 :(得分:1)

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

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

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

的更多信息