2017-09-04 67 views
0

我有一个textarea可以采取英语和阿拉伯语。当语言改变时如何改变textarea中的光标位置?

英语从左到右。所以,光标应该从左边开始。

阿拉伯语从右边开始。所以光标应该从右侧开始。

如何在用户更改语言时更改光标的位置?如果他的语言是英语,则光标应该在左边,反之亦然。

用户可以在键盘上使用ALT + SHIFT更改他的语言。

我试过这个,但它没有给我任何结果。

<textarea class="form-control description arabic" id="txt_desc" name="txt_desc" 
      placeholder="Description"></textarea> 

.arabic{text-align:right;} 

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     var reverseFunc = function() { 
      $('textarea').each(function() { 
       if($(this).hasClass('arabic')) { 
        // do the invert magic... 
        var val = $(this).val(); 
        var newVal = val.charAt(val.length-1) + substr(0, val.length-1); 
        $(this).val(val); 
       } 
      }); 
     } 

     $('textarea').bind('keyup', reverseFunc); 
    }); 
</script> 

使用Shift键,:

var x = document.getElementById("txt_desc"); 
    if (event.shiftKey) { 
     document.getElementById('txt_desc').style.direction="rtl"; 
    }else{ 
     document.getElementById('txt_desc').style.direction="ltr"; 
    } 
+0

POSS可重复的[右到左文本HTML输入](https://stackoverflow.com/questions/7524855/right-to-left-text-html-input) – RogerC

回答

2

支票KEYUP的第一个字符,如果是阿拉伯语添加此direction: rtl;

var la_ar = 
["ي","و","ه","ش","س","ق","ف","غ","ع","ض","ص","ن","م","ل","ك","ظ","ط","ز","ر","ذ","د","خ","ح","ج","ث","ت","ب","ا"] 

$("input").keyup(function(){ 
 
var la_ar = 
 
["ي","و","ه","ش","س","ق","ف","غ","ع","ض","ص","ن","م","ل","ك","ظ","ط","ز","ر","ذ","د","خ","ح","ج","ث","ت","ب","ا"] 
 
    var bla = $(this).val(); 
 
    var blaـl = bla.charAt(0); 
 
    if($.inArray(blaـl, la_ar) > -1){ 
 
     //alert('in'); 
 
     $(this).css("direction","rtl"); 
 

 

 
    }else{ 
 
     //alert('out'); 
 
     $(this).css("direction","ltr"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text">

+0

@mohamad mohamad“هلهذاماتريد”是你想要的吗? – Nrome

0
use the css attribute direction 

    direction: rtl; 

    In Javascript your code add this 

    var x = document.getElementById("txt_desc"); 
     if (event.shiftKey) { 
      document.getElementById('txt_desc').style.direction="rtl"; 
     }else{ 
      document.getElementById('txt_desc').style.direction="ltr"; 
     } 
+0

谢谢你的rtl工作,但我希望光标出现在左或右 –

+0

@mohamadmohamad我已更新答案请检查 –

+0

我们可以做到这一点,只有当用户更改语言时没有按钮关闭点击alt + shif? –

0

你必须使用HTML5特性,这将工作。

.arabic{ direction: rtl;} 
+0

谢谢你的rtl工作,但我想光标出现在左边或右边 –

0

你可以试试这个:

<textarea style="direction: rtl"></textarea>