【问题标题】:TextArea LTR/RTL文本区域 LTR/RTL
【发布时间】:2017-02-01 18:56:05
【问题描述】:

我有一个简单的 html textarea,body 有 RTL 样式,所以 textarea 继承了 body 的样式。所以问题来了。

问题: 我必须使用 $("#myTextArea").val("来自 ajax 结果的文本来这里") 将以下文本显示到文本区域。

正文如下,

پاکستان کا کل رقبہ 796096-0-0 مربع کلو میٹرز ہے۔

其余的文本是相似的,需要几行。现在乌尔都语文本中的数字实际上是 796096-0-0,但它是反向显示的。整本书中有几个这样的数字。请告诉我一种方法,我可以像往常一样将数字显示为 LTR,将其余文本显示为 RTL。

谢谢。

【问题讨论】:

    标签: html textarea right-to-left urdu


    【解决方案1】:

    您可以使用 RegEx 搜索号码。如果找到你可以反转然后替换它。

    例子:

    var textAreaValue = "پاکستان کا کل رقبہ 796096-0-0 مربع کلو میٹرز ہے۔";
    
    // This regex string means to match a digit, dash, digit, dash, then 6 digits.
    var matches = textAreaValue.match("[0-9]{6}\-[0-9]-[0-9]");
    
    if(matches) { // Check that a match happened (multiple allowed)
        for(i = 0; i < matches.length; i++) {
            var reverseValue = matches[i].split("").reverse().join("");
            textAreaValue = textAreaValue.replace(matches[i], reverseValue);
        }
    }
    
    // textAreaValue is now پاکستان کا کل رقبہ 0-0-690697 مربع کلو میٹرز ہے۔
    $("#myTextArea").val(textAreaValue);
    

    【讨论】:

    • 感谢您的回答。但是,我认为这不是我寻求的解决方案,因为这会使信息不正确。想象一下,如果只是为了显示,我将字符串 2-0-4 反转为 4-0-2。用户可能必须复制文本以供其他用途,这将是虚假信息。
    【解决方案2】:

    尝试给你的文本区域 ltr 。不继承。可以工作

    【讨论】:

    • 没用。甚至我在设置方向时也使用了“!important”:ltr.
    【解决方案3】:
    // str = "پاکستان کا کل رقبہ 796096-0-0 مربع کلو میٹرز ہے۔";
    str = str.replace(/([-0-9]+)/g, "\u202a$1\u202c");
    

    您必须将此字符串放在 CSS 属性 direction 设置为 rtl 的容器中,或者您必须在开头添加一个 "\u202E" 字符,否则这些部分会反向显示顺序(但方向正确)。

    这些是 Unicode 方向控制字符:

    • U+202A:从左到右嵌入
    • U+202C:pop-directional-formatting(基本上是嵌入结束)
    • U+202E:从右到左覆盖

    我一直以此为参考:http://www.iamcal.com/understanding-bidirectional-text/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多