Aller au contenu | Aller au menu | Aller à la recherche


javascript textarea string.length diffère entre firefox, chrome et internet explorer

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;
	}
}

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet