Lignes Max textarea
J'ai trouvé des scripts qui limite l'utilisation des lignes dans un textarea comme ceci:
$(document).ready(function(){
var lines = 10;
var linesUsed = $('#linesUsed');
var newLines=0;
$('#rev').keydown(function(e) {
newLines = $(this).val().split("\n").length;
linesUsed.text(newLines);
if(e.keyCode == 13 && newLines >= lines) {
linesUsed.css('color', 'red');
return false;
}
else {
linesUsed.css('color', '');
}
});
Cela fonctionne bien lorsque vous appuyez sur entrée et la limite à 10 .Mais le problème se produit lorsque vous tapez des phrases qui sont si longues qu'elles passent automatiquement à une nouvelle ligne, sans les \n et lorsque vous les copiez coller d'un texte, alors il ne parvient pas à limiter l'utilisation des lignes.
personne ne sait comment résoudre ce problème.
Important: la solution doit travailler pour un textarea
avez-vous essayé de calculer le
J'ai essayé quelque chose, avoir un coup d'oeil à ma réponse...
que voulez-vous faire lorsque vous collez du texte, voulez-vous le texte de couper tout ce qui va au-delà de la limite...?
ok, j'ai mis à jour ma réponse, check it out! Et n'oubliez pas l'accepter comme une réponse correcte (grosse coche en dessous des boutons de vote), si vous pensez que c'est l'un! 😉
pas sûr que vous en pensez, mais je n'ai rien trouvé la résolution de ce avec un textarea en particulier, même si je suis généralement assez bon à la recherche... des raisons pour lesquelles vous absolument besoin d'utiliser un textarea?
line-height
à la place?J'ai essayé quelque chose, avoir un coup d'oeil à ma réponse...
que voulez-vous faire lorsque vous collez du texte, voulez-vous le texte de couper tout ce qui va au-delà de la limite...?
ok, j'ai mis à jour ma réponse, check it out! Et n'oubliez pas l'accepter comme une réponse correcte (grosse coche en dessous des boutons de vote), si vous pensez que c'est l'un! 😉
pas sûr que vous en pensez, mais je n'ai rien trouvé la résolution de ce avec un textarea en particulier, même si je suis généralement assez bon à la recherche... des raisons pour lesquelles vous absolument besoin d'utiliser un textarea?
OriginalL'auteur iCode4U | 2014-03-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de le faire à l'aide de cette logique:
JS :
Ici est la mise à JOUR de la DÉMO
Il ne l'est aujourd'hui, mis à jour à répondre 🙂
Je vois que vous êtes "artificiellement" l'application d'un saut de ligne à la textarea, mais ce sera difficile à gérer avec des polices différentes... c'est pas une mauvaise solution si, je dois l'admettre.
iCode4U: Cheers mate 🙂
Est-il de toute façon de faire de sorte qu'il atteindra la fin de la zone de texte?
OriginalL'auteur Aditya
Bien, je ne pouvais pas comprendre comment calculer la hauteur de seulement le texte à l'intérieur d'un textarea, j'ai donc utilisé une
contenteditable
div à la place. J'espère que vous aimez cette solution.HTML
CSS
JS
VOICI UNE DÉMO, VOUS POUVEZ JOUER AVEC
MAJEUR MODIFIER
La suite de l'OP soulignant j'ai effectivement oublié de le adresse le plus important, j'ai mis à jour mon code. En gros, j'ai supprimé la case pour la touche d'entrée et permis de delete et backspace dans le cas où le texte va au-dessus de la limite comme suit. Vous pourriez avoir à bidouiller un peu pour l'adapter exactement à vos besoins.
MISE À JOUR DE LA DÉMO ICI
vrai que... j'ai peut donner une autre chance plus tard...
heureux je pourrais aider à vous obtenir sur la bonne voie... 😉
l'homme désolé mais c'est difficile à mettre en œuvre dans un textarea
J'ai fait quelques tests supplémentaires et de la recherche, mais il n'y a tout simplement pas de solution j'ai pu trouver qui permettrait de calculer avec précision la taille ou le nombre de lignes dans un textarea...
OriginalL'auteur webeno
C'est trop de travail pour essayer de comprendre combien de lignes sur la base du nombre de caractères dans chaque ligne et le textarea de la largeur (le textarea ont d'emballage ou non? taille de la police, et une lettre largeurs, espaces, etc...). Le plus simple est d'avoir deux textareas (l'un visible et un pas de hauteur définie à 0) avec la même largeur et de styles de police et de vérifier la hauteur de défilement de l'invisible textarea.
Voici un exemple http://jsfiddle.net/SKYt4/1/
HTML
CSS
JavaScript
La façon dont ce script fonctionne en divisant le défilement de la hauteur de l'caché textarea sur la hauteur de la ligne. Depuis le défilement de la hauteur minimum de la valeur est l'élément de la hauteur, nous avons à régler la hauteur à 0 pour obtenir une précision de défilement de la hauteur. Pour arrêter de taper, vous pouvez ajouter un événement keydown qui vérifie le nombre de lignes et de prévenir l'utilisateur pour plus de la saisie. Vous pouvez arrêter de les redimensionner en fonction de la définition de la règle css resize: none;
je sais exactement comment je le ferais, mais l'explication à cela est manquant dans votre réponse, sauf pour le "pourquoi le caché textarea" - que l'on était pour satisfaire ma curiosité... 😉
Problème: Sur certains navigateurs (Chrome est là que je l'ai remarqué),
.css('line-height')
renvoie une non-valeur int commenormal
. Solution: mettre quelque chose que vous savez sera une ligne haute, et obtenir la hauteur:$('#hidden_textarea').val("A"); var text_height = document.getElementById('hidden_textarea').scrollHeight;
Ensuite, vous pouvez diviser partext_height
pour obtenir le nombre de lignes.Aussi, la zone de texte caché obtient une barre de défilement qui provoque un retour à la ligne à un endroit un peu différent que le visible zone de texte. Ajouter
overflow-y: hidden;
à la#hidden_textbox
CSS pour corriger.OriginalL'auteur NoGray