我需要检测输入文本的第一个字母,并根据这封信对齐文本。
我需要找到第一个字母(第一个字母表示英文字符,希伯来文,阿拉伯字母等)。
这样:
“一”
这应该与左边对齐。 (第一个字母是字母 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中不起作用(就像其他一切一样)。
任何帮助表示赞赏!
答案 0 :(得分:1)
您可以使用正则表达式删除所有非字母,然后逻辑将应用于剩余的第一个字符:
$('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;
答案 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;
}