Comment Autosize un Champ de Texte en Utilisant Prototype
Lors de la conception de formulaires pour des applications web, l’expérience utilisateur (UX) est cruciale. Un défi commun auquel de nombreux développeurs sont confrontés est de créer un champ de texte qui ajuste automatiquement sa taille en fonction du contenu saisi par l’utilisateur. Cette fonctionnalité améliore non seulement l’esthétique des formulaires, mais garantit également que les utilisateurs peuvent voir toutes leurs entrées sans faire défiler inutilement. Dans cet article, nous explorerons comment mettre en œuvre l’autodimensionnement d’un champ de texte avec l’aide du framework JavaScript Prototype.
Le Problème
Mettons en place le contexte. Imaginez que vous travaillez sur une application de vente interne où les utilisateurs doivent remplir des adresses de livraison dans un champ de texte. Un champ de texte à taille fixe peut occuper beaucoup d’espace vertical et peut ne pas afficher tout le contenu correctement, surtout si l’adresse s’étend sur plusieurs lignes. Utiliser des barres de défilement peut nuire considérablement à l’expérience utilisateur, donc une meilleure solution est nécessaire.
Exigences
- Redimensionnement Vertical : Le champ de texte doit s’étendre verticalement à mesure que l’utilisateur saisit plus de lignes de texte.
- Largeur Fixe : La largeur doit être cohérente, mais ne doit pas être la priorité par rapport au redimensionnement vertical.
La Solution
Heureusement, il existe une solution simple pour réaliser cela en utilisant Prototype.js. Ci-dessous, je vais vous guider à travers la mise en œuvre d’un champ de texte auto-ajustable avec une fonction JavaScript simple.
Étape 1 : Mise en Place de Votre HTML
Tout d’abord, vous aurez besoin de la structure HTML de base pour votre champ de texte. Voici une implémentation simple :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script language="javascript">
google.load('prototype', '1.6.0.2');
</script>
</head>
<body>
<textarea id="text-area" rows="1" cols="50"></textarea>
</body>
</html>
Étape 2 : Écriture de la Fonction JavaScript
Ensuite, nous avons besoin d’une fonction JavaScript qui gèrera l’autodimensionnement. Voici comment cela se décompose :
- Obtenez la valeur actuelle du champ de texte.
- Divisez le texte en lignes en fonction des caractères de nouvelle ligne.
- Calculez le nombre de lignes en fonction de la largeur du champ de texte.
- Réglez l’attribut
rows
en conséquence.
Voici le code :
<script type="text/javascript" language="javascript">
resizeIt = function() {
var str = $('text-area').value;
var cols = $('text-area').cols;
var linecount = 0;
$A(str.split("\n")).each(function(l) {
linecount += Math.ceil(l.length / cols); // Considérez également les longues lignes
})
$('text-area').rows = linecount + 1; // Augmentez le nombre de lignes
};
// Attachez la fonction à l'événement keydown
Event.observe('text-area', 'keydown', resizeIt);
resizeIt(); // Appeler la fonction une fois pour initialiser
</script>
Étape 3 : Initialisation
La fonction est invoquée immédiatement lorsque le document se charge, garantissant que le champ de texte est correctement dimensionné en fonction de tout contenu existant.
Tests et Ajustements
- Testez la fonctionnalité : Essayez de taper dans le champ de texte et voyez comment il se redimensionne.
- Ajustez si nécessaire : En fonction de la façon dont il s’adapte à votre cas d’utilisation spécifique, des ajustements peuvent être nécessaires pour des cas particuliers.
Dernières Réflexions
Mettre en œuvre un champ de texte autodimensionné peut créer une expérience utilisateur plus fluide en éliminant le désordre inutile des formulaires. L’exemple fourni démontre une mise en œuvre de base utilisant le framework Prototype JS, mais il peut être étendu ou modifié pour répondre à des exigences plus complexes.
N’hésitez pas à poser des questions supplémentaires ou à partager vos propres modifications à cette solution !