Fork me on GitHub

Rapport de message :*
 

Zones de texte dynamiques dans les formulaires.

Titre du sujet : Zones de texte dynamiques dans les formulaires.
par slider84 sur 18/04/2014 18:22:58

Par défaut, la taille en largeur des zones de texte dans un formulaire est prédéfinie. Une petite astuce pour la rendre dynamique (sa largeur s'ajuste automatiquement à la taille de la fenêtre):

Le principe est d'encapsuler l'élément textarea du formulaire dans une div et d'appliquer une classe css à celle-ci.
Exemple pour l'élément formdhtmltextarea mais adaptable aussi facilement à l'élément formtextarea.

Editer le fichier /class/xoopsform/formdhtmltextarea.php
Dans la fonction render(), remplacer la ligne 158 (pour Xoops 2.5.6):

$ret .= "<textarea id='" $this->getName() . "' name='" $this->getName() . "' title='"$this->getTitle() . "' onselect="xoopsSavePosition('" . $this->getName() . "');" onclick="xoopsSavePosition('" . $this->getName() . "');" onkeyup="xoopsSavePosition('" . $this->getName() . "');" cols='" $this->getCols() . "' rows='" $this->getRows() . "'" $this->getExtra() . ">" $this->getValue() . "</textarea><br />n";

par:
$ret .= "<div class='textwrapper'><textarea id='" $this->getName() . "' name='" $this->getName() . "' title='"$this->getTitle() . "' onselect="xoopsSavePosition('" . $this->getName() . "');" onclick="xoopsSavePosition('" . $this->getName() . "');" onkeyup="xoopsSavePosition('" . $this->getName() . "');" cols='" $this->getCols() . "' rows='" $this->getRows() . "'" $this->getExtra() . ">" $this->getValue() . "</textarea></div><br />n";

Dans le fichier style.css de votre thème ou (directement dans xoops.css) rajouter les lignes suivantes pour définir les classes nécessaires (à adapter éventuellement selon le théme utilisé):
textarea width:100%;}
.
textwrapper border:0pxmargin-right:10pxpadding:1px;}

NB: Tous les formulaires n'étant pas forcément écrits de la même façon, vérifiez dans le code de celui-ci que la taille de l'élément 'zone de texte' n'est pas fixée à une certaine valeur (exemple ci-dessous 50)
$tx = new XoopsFormDhtmlTextArea'','tx'$tx,15,50);
Le cas échéant, la modifier comme suit:
$tx = new XoopsFormDhtmlTextArea'','tx'$tx,15,'100%');

Et voilà! vos zones de texte se redimensionnement maintenant automatiquement.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

90 Personne(s) en ligne (70 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 90 | Plus ...