javascript textarea string.length diffère entre firefox, chrome et internet explorer
Par PlaceOweb le lundi, avril 16 2012, 13:50 - Javascript - Lien permanent
Selon votre navigateur, l'attribut .length retourne une taille différente entre firefox, chrome et internet explorer, car ils ne compte pas de le même manière les saut de ligne.
var o = window.document.getElementById("textarea_commentaire"); console.log(o.value.length);
01234567890123465789 Firefox, Chrome et internet Explorer : 20
0123456789 0123456789 Firefox et Chrome : 21 Internet Explorer : 22
Vous devrez donc calculer vous même les retours chariot :
function limitChars(textid, limit, infodiv) { var text = $('#'+textid).val(); var textlength = text.length; // Patch IE vs FF,Chrome var lns = text.match(/[^\r]\n/g); var lns_count = 0; if( lns ) { textlength += lns.length; lns_count = lns.length; // console.log(textlength); } if(textlength >= (limit - lns_count)) { $('#'+infodiv).html('Vous ne pouvez pas écrire plus de ' + limit + ' caractères!'); // Votre texte est long de ' + textlength $('#'+textid).val(text.substr(0,(limit - lns_count))); return false; } else { $('#'+infodiv).html('Vous disposez de ' + (limit - textlength - lns_count) + ' caractères restants.'); return true; } }