Javascript 根据语言的不同,使用jQuery在左右文本对齐方式之间切换

Javascript 根据语言的不同,使用jQuery在左右文本对齐方式之间切换,javascript,jquery,Javascript,Jquery,我有需要在左对齐和右对齐之间切换的输入框和文本区域(取决于用户的语言,方向会有所不同)。如何使用jQuery实现这一点?使用jQuery切换元素的css(假设相关输入/文本区域都具有类textdirectionbox): 及 由于我不知道所有波斯语字母的关键代码,我不得不这样做: var str = $('#item').val(); //this is your text box var firstChar = str.substr(0,1); var characters = ['ا','

我有需要在左对齐和右对齐之间切换的输入框和文本区域(取决于用户的语言,方向会有所不同)。如何使用jQuery实现这一点?

使用jQuery切换元素的css(假设相关输入/文本区域都具有类
textdirectionbox
):


由于我不知道所有波斯语字母的关键代码,我不得不这样做:

var str = $('#item').val();  //this is your text box
var firstChar = str.substr(0,1);
var characters = ['ا','ب','پ','ت','س','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی'];
function checkPersian() {
    var result = false;
    for (i = 0 ; i<32 ; i++) {
        if (characters[i] == firstChar) {
            result = true;
        }
    }
    return result;
}
if (checkPersian()) {
    $('#item').css('direction','rtl');
} else {
    $('#item').css('direction','ltr');
}
var str=$('#item').val()//这是您的文本框
var firstChar=str.substr(0,1);
变量字符=[“ا”、“ب”、“پ”、“ت”、“ج”、“چ”、“ح”、“د”、“ذ”、“ر”、“ژ”、“س”、“ض”、“ط”、“ع”、“غ”、“ف”、“ک”、“گ”、“و”、“و”;
函数检查(){
var结果=假;
对于(i=0;i

jQuery(文档).ready(函数(){
var language=navigator.userLanguage | | navigator.language;
if(jQuery.inArray(语言,['ar','he','ur'])!=-1)
jQuery('input[type=“text”]、input[type=“password”]、textarea').css('direction','rtl');
});
?


编辑:修复了小代码错误

在这里,我彻底修改了Mohammad的脚本,但仅限于其用途:扫描用户键入的第一个字母是否为波斯语,并根据需要更改输入方向

这里是:

您可以在现代浏览器中使用
dir=“auto”
属性:

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

您也可以通过jQuery这样做:

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


我不明白你的问题是什么。你能澄清一下吗?我认为OP正在尝试动态对齐输入字段中的文本(RTL或LTR)基于语言。我有一个Javascript。你想要它还是只想要jQuery?@gurung是的,这是真的,我想要这个。嘿,Kate,你想要这个只用于英语和波斯语的代码吗?我想Vibhu以错误的方式编辑了你的问题。如何发现用户用波斯语或拉丁语输入rtl或ltr it?所以问题不是关于如何更改文本方向,但如何找出用户的语言?当用户在输入中键入值时,它或是波斯语单词或拉丁语,如果是波斯语=>RTL如果是拉丁语=>LTR。如何更改?请注意,在文本框中键入第一个字母时,必须更改方向。checkPersian()将进行检查。散列将有助于更快的查找。更好的方法是找出波斯语字符在utf8中是否有一组连续的代码点。然后可以使用charCodeAt()进行简单的数字测试.是的,你是对的,Jiggy。我在回答的第一行提到了你所说的。我没有他们的关键代码。所以我必须按照你看到的做。但我的项目中有这些代码,它完全适合我。对我来说,当我将浏览器语言设置为阿拉伯语时,它非常有效!(甚至更好)我的浏览器语言!!!!!当用户在输入中键入单词时,我想得到语言。不是来自浏览器语言。怎么样?(我的意思是波斯语(波斯语)不是阿拉伯语)请冷静,在你原来的帖子中没有暗示(“用户的语言”)通常情况下,正是因为浏览器应该从操作系统中获取您的语言,而且大多数使用英语操作系统的人肯定想用英语书写),请根据更新。此外,谁说只能识别阿拉伯语(您是否阅读了5行JavaScript代码)?顺便说一句,如果波斯语有自己的语言代码,这对我来说是新的。我只知道希伯来语、阿拉伯语和乌尔都语是RTL语言。虽然这些代码可以回答这个问题,但提供关于如何和/或为什么解决问题的额外上下文将提高答案的长期价值。干得好,这里有一个完整的列表供Ar使用“代码”这是一个国家和波斯和波斯语言。<代码>这是一个国家和波斯语言。<代码>这是一个国家和波斯语言。<代码>这是一个国家和波斯语言。<代码>这是一个国家和波斯和波斯语言。。<代码>这是一个国家。字符。这。字符。这是本。字符。字符。这方面。这。字符,以及以及以及以及以及以及以及以及以及,以及以及以及以及以及以及以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,这些,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,以及,若若若若若若若若若若,以及,,”,”,”,”,”,”,”“ة”、“و”、“ؤ”、“ي”、“ئ”];
var str = $('#item').val();  //this is your text box
var firstChar = str.substr(0,1);
var characters = ['ا','ب','پ','ت','س','ج','چ','ح','خ','د','ذ','ر','ز','ژ','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ک','گ','ل','م','ن','و','ه','ی'];
function checkPersian() {
    var result = false;
    for (i = 0 ; i<32 ; i++) {
        if (characters[i] == firstChar) {
            result = true;
        }
    }
    return result;
}
if (checkPersian()) {
    $('#item').css('direction','rtl');
} else {
    $('#item').css('direction','ltr');
}
<input type="text" dir="auto"><br>
$('input, textarea').keyup(function() {
    $(this).val().charAt(0).charCodeAt(0) < 200 ? $(this).css('direction','ltr') : $(this).css('direction','rtl');
});
function isUnicode(str) {
    return (str.charCodeAt(str.length-1) > 255) ? true : false;
}

$('input[type=text]').each(function() {
    $(this).keyup(function(e) {
        $(this).css('direction',
            isUnicode($(this).val()) ? 'rtl' : 'ltr'
        );
    });
});