Je vais tester le caractère inséré si elle est rtl ou ltr et moi ce code:expression régulière ne fonctionne pas dans IE8
function checkRTL(s) {
var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-
\u1FFF' + '\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',
rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');
return rtlDirCheck.test(s);
}
;
function checkSpecialChars(s) {
var sChars = '0-9`[email protected]#$%^&*()_+\\-=\\|\\[\\]{};\'":,.<>/',
checkChar = new RegExp('^[' + sChars + ']+');
return checkChar.test(s);
}
var input = $('#password').on('keypress', keypress);
function keypress(e) {
setTimeout(function() {
var isRTL = checkRTL(String.fromCharCode(e.charCode));
var isSpecial = checkSpecialChars(String.fromCharCode(e.charCode));
var dir = isRTL ? 'RTL' : 'LTR';
if(dir=='RTL'){
document.getElementById("langDir").innerHTML="<img src='../img
/signup_images/att.png'>Hello!";
$("#langDir").css("display","block");
}
else
{
document.getElementById("langDir").innerHTML="";
$("#langDir").css("display","none");
}
}, 100);
}
Ce code fonctionne parfaitement dans IE 9, 10, Chrome et Firefox . Mais il ne fonctionne pas dans IE8 Après un certain débogage que j'ai trouvé que cette ligne:
rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');
return rtlDirCheck.test(s);
retourne toujours Faux. Qu'est-ce qui ne va pas avec ça?
* "J'ai découvert que cette ligne ..." * c'est deux lignes. Lequel est «faux», le «nouveau RegExp» ou «retour ...»? En outre, des erreurs dans votre console? – Phil
aucune erreur, la deuxième ligne –