2010-06-01 6 views
2

Comment puis-je faire un <textarea> redimensionner automatiquement avec son contenu (comme sur Facebook) en utilisant jQuery.textarea redimensionner automatiquement dans jquery

+1

Auto-Redimensionner selon quoi? L'élément contenant? La fenêtre? La longueur du texte? –

+0

Je présume que vous voulez dire comme la zone de texte Safari/Chrome par défaut ... ou la zone de texte croissante comme sur Facebook? – scunliffe

+0

comme livre de visage je veux redimensionner ma zone de texte quand j'entre plus de texte dans la zone de texte – picnic4u

Répondre

2
<script type="text/javascript"> 

    function adjustTextarea(this_){ 

    var value_ = this_.value; 

    value_ = value_.replace(new RegExp("\n\r", 'gi'), "\n"); 
    value_ = value_.replace(new RegExp("\r", 'gi'), "\n"); 

    var split_ = value_.split("\n"); 
    this_.rows = split_.length; 

    return; 
    } 

    </script> 

    <textarea cols="100" style="overflow:hidden;" onkeyup="adjustTextarea(this);" onfocus="adjustTextarea(this);" > 
    Text 
    </textarea> 
+0

Excellente solution en javascript pur! – B4NZ41

0

Utilisez James Padolsey AutoResize plugin jquery de http://james.padolsey.com/javascript/jquery-plugin-autoresize/

Utilisation de base

$('textarea#comment').autoResize({ 
     // On resize: 
     onResize : function() { 
     $(this).css({opacity:0.8}); 
     }, 
     // After resize: 
     animateCallback : function() { 
     $(this).css({opacity:1}); 
     }, 
     // Quite slow animation: 
     animateDuration : 300, 
     // More extra space: 
     extraSpace : 40 
    }); 
0

poids super léger:

Est-ce que quelqu'un a considéré contenteditable? Pas de déconner avec le défilement, et le seul JS que j'aime à ce sujet est si vous prévoyez d'enregistrer les données sur le flou ... et apparemment, il est compatible sur tous les navigateurs populaires: http://caniuse.com/#feat=contenteditable

comme une boîte de texte, et il s'autosise ... Faites sa taille min-hauteur de la hauteur de texte préférée et y avoir.

Ce qui est cool à propos de cette approche est que vous pouvez enregistrer et balises sur certains navigateurs.

http://jsfiddle.net/gbutiri/v31o8xfo/

<style> 
.autoheight { 
    min-height: 16px; 
    font-size: 16px; 
    margin: 0; 
    padding: 10px; 
    font-family: Arial; 
    line-height: 16px; 
    box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    overflow: hidden; 
    resize: none; 
    border: 1px solid #ccc; 
    outline: none; 
    width: 200px; 
} 
</style> 
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
<script> 
$(document).on('blur','.autoheight',function(e) { 
    var $this = $(this); 
    // The text is here. Do whatever you want with it. 
    console.log($this.html()); 
}); 

</script> 
<div class="autoheight contenteditable" contenteditable="true">Mickey <b>Mouse</b></div> 
Questions connexes