首字母对齐文字

时间:2015-08-12 20:57:06

标签: javascript jquery

我需要检测输入文本的第一个字母,并根据这封信对齐文本。

我需要找到第一个字母(第一个字母表示英文字符,希伯来文,阿拉伯字母等)。

这样:

“一”

这应该与左边对齐。 (第一个字母是字母 a ,而不是

“א

这应该与右边对齐(因为有希伯来字母)。

....שלוםhellow

这应该与右边对齐。

我找到了这些jsfiddles:

http://jsfiddle.net/BlackSRC/qHLXX/

$('input, textarea').keyup(function() {
    $(this).val().charAt(0).charCodeAt(0) < 200 ? 
    $(this).css('direction','ltr') : $(this).css('direction','rtl');
});

http://jsfiddle.net/BlackSRC/qHLXX/1/

<input type="text" dir="auto"><br>

第一个jsfiddle工作,但它检查字符串的第一个字符而不是第一个字母,因此“א与左边对齐。

第二个jsfiddle在Internet Explorer中不起作用(就像其他一切一样)。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式删除所有非字母,然后逻辑将应用于剩余的第一个字符:

&#13;
&#13;
$('input, textarea').keyup(function() {
  var value= $(this).val().replace(/[^a-zA-Z\-\u0590-\u06FF]/g,'').substr(0,1);
  value.charAt(0).charCodeAt(0) < 200 ? $(this).css('direction','ltr') : $(this).css('direction','rtl');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text"><br>
<textarea></textarea>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果是希伯来字母字符

,您可以检查每个字符并返回true
$('input, textarea').keyup(function () {
    if (!hebrewchar($(this).val())) {
        $(this).css('direction', 'ltr')
    } else {
        $(this).css('direction', 'rtl');
    }

});

function hebrewchar(stringaValue){
    var HebrewChars = new RegExp("^[\u0590-\u05FF]+$");
    for(var i=0;i<stringaValue.length;i++){
        if (HebrewChars.test(stringaValue[i])) {
            return true;
        }
    }
    return false;
}

http://jsfiddle.net/qHLXX/23/