Comment puis-je agrandir automatiquement une zone de texte à l'aide de jQuery?
J'ai une zone de texte pour expliquer l'ordre du jour de la réunion, donc je veux développer cette zone de texte lorsque le texte de mon ordre du jour continue de s'agrandir cette zone de texte.
Réponses:
J'en ai essayé beaucoup et celui-ci est génial.Link est mort. Une version plus récente est disponible ici . Voir ci-dessous pour l'ancienne version.Vous pouvez essayer en maintenant la touche Entrée enfoncée dans la zone de texte. Comparez l'effet avec l'autre plugin textarea à expansion automatique ...
modifier en fonction du commentaire
Remarque: vous devez inclure les fichiers js nécessaires ...
Pour éviter que la barre de défilement dans la zone de texte ne clignote pendant l'expansion / la contraction, vous pouvez également régler le
overflow
surhidden
:Mettre à jour:
Le lien ci-dessus est rompu. Mais vous pouvez toujours obtenir les fichiers javascript ici .
la source
Si vous ne voulez pas de plugin, il existe une solution très simple
Voyez-le fonctionner dans un jsFiddle que j'ai utilisé pour répondre à une autre question textarea ici .
Pour répondre à la question de le faire à l'envers ou de le réduire lorsque le texte est supprimé: jsFiddle
@Jason en a conçu un ici
la source
if (this.clientHeight < this.scrollHeight) { this.style.height = this.scrollHeight + 'px'; }
Agrandit / rétrécit la zone de texte. Cette démo utilise jQuery pour la liaison d'événements, mais ce n'est en aucun cas un must.
( pas de support IE - IE ne répond pas au changement d'attribut des lignes )
PAGE DE DÉMO
HTML
CSS
javascript (mis à jour)
la source
la source
Vous pouvez essayer celui-ci
la source
Grâce à SpYk3HH, j'ai commencé avec sa solution et je l'ai transformée en cette solution, qui ajoute la fonctionnalité de réduction et est encore plus simple et plus rapide, je suppose.
Testé dans les navigateurs Chrome, Firefox et Android 2.3.3 actuels.
Vous pouvez voir des clignotements des barres de défilement dans certains navigateurs. Ajoutez ce CSS pour résoudre ce problème.
la source
1px
semble être meilleur)Pour définir une zone de texte extensible automatiquement, vous devez faire deux choses:
Voici une fonction artisanale pour accomplir la tâche.
Fonctionne bien avec presque tous les navigateurs (<IE7) . Voici la méthode:
ICI est un article à ce sujet.
la source
J'ai déjà utilisé le plugin jQuery Textarea Expander avec de bons résultats.
la source
Tout le monde devrait essayer ce plugin jQuery: xautoresize-jquery . C'est vraiment bien et devrait résoudre votre problème.
la source
(Cela ne fonctionnera pas dans Internet Explorer 9 ou version antérieure car il utilise l'
input
événement)la source
Je viens de créer cette fonction pour développer les zones de texte sur pageload. Changez simplement
each
enkeyup
et cela se produira lorsque la zone de texte est saisie.Testé dans Chrome, IE9 et Firefox. Malheureusement, Firefox a ce bogue qui renvoie la valeur incorrecte pour
scrollHeight
, donc le code ci-dessus contient une solution de contournement (hacky) pour cela.la source
J'ai corrigé quelques bugs dans la réponse fournie par Reigel (la réponse acceptée):
Il reste quelques problèmes concernant les espaces. Je ne vois pas de solution pour les espaces doubles, ils sont affichés sous forme d'espaces simples dans l'ombre (rendu html). Cela ne peut pas être résolu en utilisant & nbsp ;, car les espaces doivent se rompre. En outre, la zone de texte coupe une ligne après un espace, s'il n'y a pas de place pour cet espace, elle coupera la ligne à un point antérieur. Les suggestions sont les bienvenues.
Code corrigé:
la source
Code de SpYk3HH avec ajout pour la réduction de taille.
la source
Cela a mieux fonctionné pour moi:
la source
Les gens semblent avoir des solutions très travaillées ...
Voici comment je fais:
Cela fonctionnera avec de longues lignes, ainsi que des sauts de ligne .. grandit et rétrécit ..
la source
J'ai écrit cette fonction jquery qui semble fonctionner.
Cependant, vous devez spécifier min-height en css, et à moins que vous ne souhaitiez coder, il doit comporter deux chiffres. c'est-à-dire 12px;
la source
Pour toute personne utilisant le plugin publié par Reigel, sachez que cela désactivera la fonctionnalité d'annulation dans Internet Explorer (allez essayer la démo).
Si cela pose un problème pour vous, je vous suggère d'utiliser le plugin posté par @richsage à la place, car il ne souffre pas de ce problème. Voir le deuxième point sur la recherche de la zone de texte ultime de redimensionnement pour plus d'informations.
la source
Il y a aussi le
bgrins/ExpandingTextareas (github)
projet très cool , basé sur une publication de Neill Jenkins intitulée Expanding Text Areas Made Elegantla source
Je voulais des animations et une réduction automatique. La combinaison est apparemment difficile, car les gens ont proposé des solutions assez intenses pour cela. Je l'ai également rendu résistant aux zones de texte multiples. Et ce n'est pas aussi ridiculement lourd que le plugin jQuery.
Je me suis basé sur la réponse de vsync (et sur l'amélioration qu'il a apportée), http://codepen.io/anon/pen/vlIwj est le codepen de mon amélioration.
HTML
CSS
JS
la source
Il y a beaucoup de réponses à cela, mais j'ai trouvé quelque chose de très simple, attachez un événement keyup à la zone de texte et vérifiez si la touche Entrée appuyez sur le code de la touche est 13
keyPressHandler(e){
if(e.keyCode == 13){
e.target.rows = e.target.rows + 1;
}
}
Cela ajoutera une autre ligne à votre zone de texte et vous pourrez styliser la largeur en utilisant CSS.
la source
Disons que vous essayez d'accomplir cela en utilisant Knockout ... voici comment:
En page:
Dans le modèle de vue:
Cela devrait fonctionner même si vous avez plusieurs zones de texte créées par un Knockout foreach comme je le fais.
la source
Solution simple:
HTML:
JS:
https://fiddle.jshell.net/7wsnwbzg/
la source
La solution la plus simple:
html:
css:
js (jquery):
la source
Solution avec pur JS
https://jsfiddle.net/Samb102/cjqa2kf4/54/
la source
C'est la solution que j'ai fini par utiliser. Je voulais une solution en ligne, et cela semble jusqu'à présent fonctionner très bien:
la source
https://codepen.io/nanachi1/pen/rNNKrzQ
cela devrait fonctionner.
la source
@Georgiy Ivankin a fait une suggestion dans un commentaire, je l'ai utilisée avec succès :) -, mais avec de légers changements:
Il arrête de s'étendre après avoir atteint une hauteur maximale de 200 px
la source
Ancienne question mais vous pouvez faire quelque chose comme ceci:
html:
jquery:
De cette façon, le redimensionnement automatique s'appliquera à n'importe quelle zone de texte avec la classe "zone de texte". Réduit également lorsque le texte est supprimé.
jsfiddle:
https://jsfiddle.net/rotaercz/46rhcqyn/
la source
Essaye ça:
la source
Solution jQuery simple:
HTML:
Le débordement doit être masqué . Le redimensionnement est nul si vous ne souhaitez pas le redimensionner à la souris.
la source