2015-11-17 1 views
0

Actuellement, j'ai le code suivant pour mon textarea redimensionnement automatique:Autosize une zone de texte sans accent

$('textarea').bind('input propertychange', function() { 
    $(this).height(50).height(Math.min(370, this.scrollHeight)); 
}); 

Cela fonctionne bien alors que je suis dans la zone de texte et modifier le texte en appuyant sur certaines touches.

Ce dont j'ai besoin est une possibilité de faire la même chose lors de la définition du texte de la zone par JavaScript et lorsque la zone de texte n'est pas focalisée. Seul l'exécution du même code dans le rappel (bien sûr avec la bonne portée) ne fonctionne pas - la hauteur est nulle.

+0

Avez-vous essayé de tirer l'événement par vous-même avec JQuery? – Blag

+0

peut-être liée à http://stackoverflow.com/questions/2988660/propertychange-event-is-not-available-in-firefox – Blag

Répondre

0

Vous pouvez essayer de déclencher l'événement

$('textarea').on('input propertychange', function() { 
    $(this).height(50).height(Math.min(370, this.scrollHeight)); 
}); 
$('textarea').trigger('propertychange'); 

// Si vous modifiez le contenu textarea avec html() ou ajoutez vous pouvez essayer quelque chose comme ça $ ('textarea') html (somecontent). $ ('textarea'). Height ($ ('textarea'). ScrollHeight);

+0

Oui, maintenant la hauteur n'est plus nulle mais pas encore assez élevée. – tyurd

+0

comment changez-vous le texte dans le textarea? – goupil

+0

$ ('textarea'). Html ('un peu de contenu'); ou .append ('un peu plus de contenu'); – tyurd

0

après l'exécution de votre feu de fonction de rappel de la fonction propertyChange

$('textarea').trigger('propertychange'); 
0

avec un change et un trigger

$("#i").on('change', function(){ 
 
    this.style.color = 'red'; 
 
    }); 
 
function f(){ 
 
    $('#i').trigger('change'); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="i" value="hello" /><br> 
 
<button onclick="f()">Run</button>

0

ma solution jquery est:

$(document).ready(function(){ 
    $("textarea").each(function(){ 
     $(this).height(($(this)[0].scrollHeight) + "px"); 
    }); 
    $("textarea").keypress(function(){ 
     $(this).height(($(this)[0].scrollHeight) + "px"); 
    }); 
}) 

JSFiddle