2011-12-21 19 views
5

Tengo cuadros de entrada y áreas de texto que deben alternar entre alineado a la izquierda y alineación a la derecha (dependiendo del idioma del usuario, la dirección sería diferente) ¿Cómo puedo hacer esto con jQuery?Use jQuery para alternar entre alineación de texto izquierda y derecha, según el idioma

+0

No entiendo cuál es su pregunta. ¿Puedes aclarar? –

+0

Creo que OP está intentando alinear dinámicamente el texto en el campo de entrada (ya sea RTL o LTR) según el idioma. –

+0

Tengo un Javascript para esto. ¿Te gustaría o solo quieres jQuery? –

Respuesta

1

Aquí he revisado por completo el guión de Mohammad pero es limitada a su propósito: digitalización si la primera letra el usuario teclea es persa y cambiar la dirección de los insumos de acuerdo.

Aquí está: jsfiddle.net/uPH7N/4

+0

Buen trabajo, Aquí una lista completa de ellos para los idiomas árabe y persa. 'this.characters = ['ا', 'أ', 'إ', 'آ', 'ء', 'ى', 'ب', 'پ', 'ت', 'ث', 'ج' , 'ح', 'خ', 'چ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش', 'ص', 'ض', ' ط ',' ظ ',' ع ',' غ ',' ف ',' ق ',' ك ',' ک ',' گ ',' ل ',' م ',' ن ',' ه ' , 'ة', 'و', 'ؤ', 'ي', 'ئ']; ' –

0

Alternar los elementos CSS con jQuery (suponiendo que las entradas pertinentes/áreas de texto tienen la clase textdirectionBoxes):

$('.textdirectionBoxes').css('direction', 'rtl'); 

y

$('.textdirectionBoxes').css('direction', 'ltr'); 
+0

¿Cómo saber si está escribiendo en persa o en latín la palabra por usuario para rtl o ltr? –

+0

¿Entonces la pregunta no es sobre cómo cambiar la dirección del texto sino cómo averiguar el idioma del usuario? –

+0

cuando el usuario escribe valor en la entrada, it o es palabra persa o latina, si era persian => RTL si era latin => LTR. ¿Cómo es? –

4

Como no sé el código de tecla todas las letras persas, que tenían que hacerlo de esta manera:

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'); 
} 
+0

Preste atención a que debe cambiar su dirección justo cuando la primera letra ingresó en el cuadro de texto. checkPersian() lo comprobará. –

+1

Un hash haría una búsqueda más rápida. Aún mejor sería averiguar si los caracteres persas tienen un conjunto contiguo de puntos de código en utf8. Entonces podrías hacer una prueba numérica simple con charCodeAt(). – jiggy

+0

Sí, tienes razón Jiggy. Mencioné lo que dijiste en la primera línea de mi respuesta. No tengo sus claves. Así que tuve que hacer lo que estás viendo. –

0

¿Qué hay de

jQuery(document).ready(function(){ 
    var language = navigator.userLanguage || navigator.language; 
    if(jQuery.inArray(language, ['ar', 'he', 'ur']) != -1) 
     jQuery('input[type="text"], input[type="password"], textarea').css('direction', 'rtl'); 
}); 

?

edición: fijo poco código de errores

+0

No funciona, consulte aquí: http://jsfiddle.net/uPH7N/1/ –

+0

¡Para mí funciona muy bien cuando configuro el navegador de mi navegador en árabe! (http://jsfiddle.net/uPH7N/2/ [edit] o incluso mejor http: // jsfiddle.net/uPH7N/3 /) – Matmarbon

+0

mi navegador de idiomas !!!!!? Quiero obtener el idioma cuando el usuario escribe la palabra en la entrada. no del lenguaje de navegadores. ¿Cómo es? (Me refiero a que el idioma persa (farsi) no es árabe) –

2

Puede utilizar dir="auto" atributo en los navegadores modernos: Live Demo

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

También puede hacerlo por jQuery así: Live Demo

$('input, textarea').keyup(function() { 
    $(this).val().charAt(0).charCodeAt(0) < 200 ? $(this).css('direction','ltr') : $(this).css('direction','rtl'); 
}); 
0
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' 
     ); 
    }); 
}); 
+1

Si bien este código puede responder a la pregunta, proporcionar un contexto adicional con respecto a _how_ y/o _por qué_ resuelve el problema mejoraría la respuesta a largo valor a largo plazo –

Cuestiones relacionadas