按首字母对齐文本

Align text by first letter

本文关键字:对齐 文本      更新时间:2023-09-26

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

我需要找到第一个字母(第一个字母表示英语、希伯来语、阿拉伯语等的字符)

:


"a"

这个应该向左对齐。(首字母字母,不是 " )


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


…שלום嗨

应该向右对齐。


我发现了这些文件:

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不能在ie浏览器中工作(像其他所有东西一样)。

感谢任何帮助!

您可以检查每个字符并返回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/

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

$('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');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text"><br>
<textarea></textarea>