2017-02-01 10 views
1

私は単純なhtmlテキストエリアを持っていますが、ボディはRTLスタイルを持っているので、textareaはbodyからスタイルを継承しています。問題は次のとおりです。TextArea LTR/RTL

問題: $( "#myTextArea")を使用してテキスト領域に次のテキストを表示する必要があります。val( "ajax結果のテキストはここにあります")。

テキストは以下の通りです、

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

とテキストの残りの部分は似ており、いくつかのラインを取ります。現在、ウルドゥー語のテキストの数字は実際には796096-0-0ですが、逆に表示されます。このテキストにはいくつかの数字があります。数字をLTRとして、残りのテキストをRTLとして通常通り表示する方法を教えてください。

ありがとうございました。

答えて

0

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); 
+0

は目をありがとう答え。しかし、これは私が求める解決策ではないと考えています。これは情報が正しくないことにつながります。私が4-0-2に文字列2-0-4を逆に表示することを想像してみてください。ユーザーは、他の使用のためにテキストをコピーする必要があり、それは誤った情報になります。 –

0

は、あなたのテキスト領域のLTRを与えるようにしてください。継承しません。月が

+0

動作しませんでした。私は、方向を設定しながら "重要"を使用しました:ltr。 –

0
// str = "پاکستان کا کل رقبہ 796096-0-0 مربع کلو میٹرز ہے۔"; 
str = str.replace(/([-0-9]+)/g, "\u202a$1\u202c"); 

を働くあなたはrtlにCSS属性directionセットを持っているコンテナにこの文字列を配置する必要があります、またはあなたが先頭に"\u202E"文字を追加する必要があります、それ以外のセクションでは、逆に登場しました(しかし、正しい方向に)。

これらは、Unicode方向制御文字である:

  • U + 202A:左から右へ
  • U + 202Cを埋め込む:ポップ方向-書式(基本的に埋め込む終了)
  • U + 202E:右から左への上書き

私はリファレンスとしてこれを使用してきた:http://www.iamcal.com/understanding-bidirectional-text/