IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

textarea: wrap avec mots longs


Sujet :

HTML

  1. #1
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut textarea: wrap avec mots longs
    Bonjour,

    Je cherche a créer un retour a la ligne dans un textarea lorsque la chaine de caractère entrée depasse la largeur du textearea, sans pour autant contenir un caractère d'espacement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea cols="10" rows="2">AAAAAAAAAAAAAAAAAAAAAAAAAA</textarea>
    L'attribut wrap, et le style white-space n'ont rien donné de concluant

    Auriez vous une solution ?



    Z.

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Je me souviens avoir eu ce problème il y a quelques temps : j'avais cherché une propriété ou une fonction existante permettant de gérer le cas de mots plus longs que la largeur maximale de mon textarea, mais en vain .

    >>> solution que j'avais adoptée à l'époque : écrire une fonction maison pour tronquer moi-même les mots trop longs en envoyant en paramètre le nombre de caractères max d'une ligne, et en récupérant ma chaine en sortie, augmentée de quelques espaces (et tirets de césure) aux endroits voulus...

    (ce n'est qu'une solution très approximative, qui ne respecte pas les règles grammaticales françaises de la césure : je ne fais ici que couper au milieu de chaque mot trop long... mais dans mon contexte c'était suffisant)

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // FONCTION : insère des césures (avec tiret) dans les trop grands mots de la chaine courante
    // PARAM #1 : "troncature" (number) : taille maximale autorisée (par mot) 
    // RETOUR : chaine (construite à partir de la chaine courante) 
    String.prototype.tronquer = function(troncature) {
    	var retour, tabMots, is_ok, longueur;
       var texte = this;
    	do	{
    		retour = "";
    		tabMots = texte.split(" ");
    		is_ok = true;
    		for (var i = 0 ; i < tabMots.length ; i++) {
    			longueur = tabMots[i].length;
    			if (longueur > troncature) {
    				retour += tabMots[i].substr(0,(longueur/2)) + "- " + tabMots[i].substr((longueur/2)) + " ";
    				is_ok = false;
    			}
    			else
    				retour += tabMots[i] + ((i == (tabMots.length - 1))?"":" ");
    		}
    		texte = retour;
    	}
    	while(!is_ok)
    	return retour;
    }
    qui s'utilise comme ceci :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var monTextArea = getElementById("idDeMonTextarea");
    var maChaineApresTroncature = maChaine.tronquer(monTextArea.cols);

    S'il y a de meilleures solutions (ce dont je ne doute pas ^^), même si mon problème à moi n'est plus du tout d'actualité, ça m'intéresse aussi, ne serait-ce que par curiosité...

  3. #3
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    J'ai eut confirmation que seul le javascript pouvait repondre a mon problème.
    Ce que tu proposes ne m'interessant qu'a moitié (je cherche a faire des renvoies à la ligne dans des chaines de caractères (séquences d'adn) sans inséré de tirets (ce ne sont pas des mots)) j'ai donc etendu de la meme facon que toi la classe string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    //string.truncate(<size>)
    //Add phisical new line (\n) in a string, si that a line do not contain more than <size> characters.
    String.prototype.truncate = function(size) {
    	var text = this;
     
    	//firefox only
    	text = text.replace(/\n/g, '');
    	//ie and opera
    	text = text.replace(/\s/g, '');
     
    	var length = text.length;
     
    	//if size is not achieved, not useful to continue
    	if (length <= size) return text;
     
    	var finalText = new String();
    	var i;
    	//insert \n every size characters
    	for (i = 0; i < length + size; i += size) {
    		finalText += text.substr(i, size) + "\n";
    		}
     
    	//remove extra \n
    	finalText = finalText.slice(0, finalText.length - 2);
     
    	return finalText;
    	}
    J'ai utilisé jquery pour insérer un event onkeyup sur le textarea, et recuperer la taille (attribut <cols>) du textarea :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function() {
      $('form[name=h] textarea').keyup(function() {
        $(this).attr('value', $(this).attr('value').truncate($(this).attr('cols')));
        });
      });
    J'ai pu tester tout ca sous opera 9.64, firefox 3.0.12 et ie 8.

    Z.

Discussions similaires

  1. select avec un long
    Par debutantshell dans le forum Oracle
    Réponses: 8
    Dernier message: 22/11/2007, 10h22
  2. Retour a la ligne dans un textarea quand le mot est trop long
    Par avogadro dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/11/2006, 16h35
  3. PB avec mot trop long qui agrandit mon tableau !
    Par wormseric dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/07/2006, 17h01
  4. acceder a un fichier avec mot de passe
    Par moa378 dans le forum Windows
    Réponses: 16
    Dernier message: 17/05/2005, 13h15
  5. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo