Jak automatycznie zmienić rozmiar obszaru tekstu za pomocą Prototype?


121

Obecnie pracuję nad wewnętrzną aplikacją sprzedażową dla firmy, dla której pracuję, i mam formularz, który umożliwia użytkownikowi zmianę adresu dostawy.

Teraz myślę, że wyglądałoby to o wiele ładniej, gdyby obszar tekstu, którego używam do głównych szczegółów adresu, po prostu zajmowałby obszar tekstu w nim i automatycznie zmieniał rozmiar, jeśli tekst został zmieniony.

Oto jego zrzut ekranu.

Adres ISO

Jakieś pomysły?


@Chris

Dobra uwaga, ale są powody, dla których chcę zmienić rozmiar. Chcę, aby obszar, jaki zajmuje, był obszarem informacji w nim zawartych. Jak widać na zrzucie ekranu, jeśli mam stały obszar tekstu, zajmuje to sporo miejsca w pionie.

Mogę zmniejszyć czcionkę, ale adres powinien być duży i czytelny. Teraz mogę zmniejszyć rozmiar pola tekstowego, ale wtedy mam problemy z ludźmi, którzy mają wiersz adresu, który zajmuje 3 lub 4 (jeden zajmuje 5) wierszy. Konieczność, aby użytkownik korzystał z paska przewijania, jest głównym nie do przyjęcia.

Myślę, że powinienem być bardziej szczegółowy. Jestem po zmianie rozmiaru w pionie, a szerokość nie ma większego znaczenia. Jedynym problemem, który się z tym wiąże, jest to, że numer ISO (duża „1”) jest wypychany pod adres, gdy szerokość okna jest zbyt mała (jak widać na zrzucie ekranu).

Nie chodzi o to, żeby ćwiczyć; chodzi o posiadanie pola tekstowego, które użytkownik może edytować, które nie będzie zajmować niepotrzebnego miejsca, ale pokaże cały tekst w nim.

Chociaż jeśli ktoś znajdzie inny sposób podejścia do problemu, ja też jestem na to otwarty.


Zmodyfikowałem trochę kod, ponieważ działał trochę dziwnie. Zmieniłem to tak, aby aktywował się przy keyup, ponieważ nie uwzględniałby znaku, który został właśnie wpisany.

resizeIt = function() {
  var str = $('iso_address').value;
  var cols = $('iso_address').cols;
  var linecount = 0;

  $A(str.split("\n")).each(function(l) {
    linecount += 1 + Math.floor(l.length / cols); // Take into account long lines
  })

  $('iso_address').rows = linecount;
};

Czy możesz stworzyć witrynę demonstracyjną, na której będziemy mogli zobaczyć, jak to działa?
Einar Ólafsson

3
ta wtyczka wydaje się dobra jacklmoore.com/autosize
Gaurav Shah

Czy istnieje wersja JQuery? Jak uzyskać dostęp do kolumn i wierszy TextArea w JQuery?
Zach,

Prawie to samo, ale z wyraźnym wymogiem, który powinien się zmniejszyć po usunięciu tekstu: stackoverflow.com/questions/454202/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:


75

Facebook robi to, kiedy piszesz na ścianach ludzi, ale zmienia rozmiar tylko w pionie.

Pozioma zmiana rozmiaru wydaje mi się bałaganem z powodu zawijania słów, długich linii itd., Ale pionowa zmiana rozmiaru wydaje się być całkiem bezpieczna i przyjemna.

Żaden ze znanych mi początkujących użytkowników Facebooka nie wspomniał o tym ani nie był zdezorientowany. Użyłbym tego jako anegdotycznego dowodu, aby powiedzieć „śmiało, wdrażaj to”.

Trochę kodu JavaScript, aby to zrobić, używając Prototype (bo to jest to, co znam):

<!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>

        <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 ); // Take into account long lines
              })
              $('text-area').rows = linecount + 1;
            };

            // You could attach to keyUp, etc. if keydown doesn't work
            Event.observe('text-area', 'keydown', resizeIt );

            resizeIt(); //Initial on load
        </script>
    </body>
</html>

PS: Oczywiście ten kod JavaScript jest bardzo naiwny i niezbyt dobrze przetestowany, i prawdopodobnie nie chcesz go używać na polach tekstowych zawierających powieści, ale masz ogólny pomysł.


2
Zakłada się, że przeglądarka łamie się przy dowolnym znaku, co jest nieprawidłowe. Spróbuj <textarea cols='5'>0 12345 12345 0</textarea>. (Napisałem prawie identyczną implementację i złapałem ją dopiero po miesiącu używania.) Nie udaje się również dla pustych wierszy.
st-boost

Czy jest do tego wersja JQuery?
emeraldhieu

Lewy ukośnik w $ A (str.split ("\ n")) wymaga innego. (Moja edycja powyższej odpowiedzi z jakiegoś powodu nie przetrwała.)
gherson

67

Udoskonaleniem niektórych z tych odpowiedzi jest umożliwienie CSS wykonania większej ilości pracy.

Wydaje się, że podstawowa trasa to:

  1. Utwórz element kontenera do przechowywania textareai ukrytydiv
  2. Przy użyciu JavaScript, zachować textarea„s zawartość zsynchronizowane z div” s
  3. Pozwól przeglądarce obliczyć wysokość tego elementu div
  4. Ponieważ przeglądarka obsługuje renderowanie / zmienianie rozmiaru ukrytego div, unikamy jawnego ustawiania textareawysokości.

document.addEventListener('DOMContentLoaded', () => {
    textArea.addEventListener('change', autosize, false)
    textArea.addEventListener('keydown', autosize, false)
    textArea.addEventListener('keyup', autosize, false)
    autosize()
}, false)

function autosize() {
    // Copy textarea contents to div browser will calculate correct height
    // of copy, which will make overall container taller, which will make
    // textarea taller.
    textCopy.innerHTML = textArea.value.replace(/\n/g, '<br/>')
}
html, body, textarea {
    font-family: sans-serif;
    font-size: 14px;
}

.textarea-container {
    position: relative;
}

.textarea-container > div, .textarea-container > textarea {
    word-wrap: break-word; /* make sure the div and the textarea wrap words in the same way */
    box-sizing: border-box;
    padding: 2px;
    width: 100%;
}

.textarea-container > textarea {
    overflow: hidden;
    position: absolute;
    height: 100%;
}

.textarea-container > div {
    padding-bottom: 1.5em; /* A bit more than one additional line of text. */ 
    visibility: hidden;
}
<div class="textarea-container">
    <textarea id="textArea"></textarea>
    <div id="textCopy"></div>
</div>


5
To świetne rozwiązanie! Jedynym zastrzeżeniem jest to, że przeglądarki, które nie obsługują rozmiaru pola (IE <7), nie obliczą poprawnie szerokości i dlatego stracisz trochę dokładności, ale jeśli zostawisz miejsce na końcu linii, nadal powinno być dobrze. Zdecydowanie uwielbiam to za prostotę.
Antonio Salazar Cardozo

4
Pozwoliłem sobie zaimplementować to rozwiązanie jako samodzielną, prostą w użyciu wtyczkę jQuery, która nie wymaga żadnych znaczników ani stylizacji. xion.io/jQuery.xarea na wypadek, gdyby ktoś mógł go użyć :)
Xion

2
ustawienie textCopy na hidden nadal pozwala ukrytym div zajmować miejsce w znacznikach, więc gdy zawartość textCopy stanie się większa, w końcu otrzymasz pasek przewijania na całej długości twojej strony ...
topwik

1
Kolejna fajna poprawka do tego; var text = $("#textArea").val().replace(/\n/g, '<br/>') + '&nbsp;';zapewnia, że ​​nie pojawi się szarpane zachowanie podczas przechodzenia z pustej nowej linii na końcu obszaru tekstowego do niepustej, ponieważ ukryty element div zapewnia zawijanie do nbsp.
nieświadomie

1
@nieświadomie świetne wezwanie do dodania „& nbsp;” aby pozbyć się tego nagłego wzrostu rozmiaru po dodaniu pierwszej litery do nowej linii - dla mnie jest zepsuta bez tego - to należy dodać do odpowiedzi!
davnicwil

40

Oto inna technika automatycznego określania rozmiaru obszaru tekstu.

  • Używa wysokości w pikselach zamiast wysokości linii: dokładniejsza obsługa zawijania linii, jeśli używana jest czcionka proporcjonalna.
  • Akceptuje identyfikator lub element jako dane wejściowe
  • Akceptuje opcjonalny parametr maksymalnej wysokości - przydatny, jeśli wolisz nie pozwolić, aby obszar tekstowy przekroczył określony rozmiar (zachowaj go na ekranie, unikaj niszczenia układu itp.)
  • Przetestowano w przeglądarkach Firefox 3 i Internet Explorer 6

Kod: (zwykły waniliowy JavaScript)

function FitToContent(id, maxHeight)
{
   var text = id && id.style ? id : document.getElementById(id);
   if (!text)
      return;

   /* Accounts for rows being deleted, pixel value may need adjusting */
   if (text.clientHeight == text.scrollHeight) {
      text.style.height = "30px";
   }

   var adjustedHeight = text.clientHeight;
   if (!maxHeight || maxHeight > adjustedHeight)
   {
      adjustedHeight = Math.max(text.scrollHeight, adjustedHeight);
      if (maxHeight)
         adjustedHeight = Math.min(maxHeight, adjustedHeight);
      if (adjustedHeight > text.clientHeight)
         text.style.height = adjustedHeight + "px";
   }
}

Demo: (używa jQuery, cele w obszarze tekstowym, w którym teraz piszę - jeśli masz zainstalowany Firebug , wklej oba przykłady do konsoli i przetestuj na tej stronie)

$("#post-text").keyup(function()
{
   FitToContent(this, document.documentElement.clientHeight)
});

@SMB - to prawdopodobnie nie byłoby zbyt trudne do wdrożenia, po prostu dodaj kolejny warunek
Jason

@Jason: Kiedy tekst w polu nie wypełnia go clientHeighti scrollHeightjest równy, więc nie możesz użyć tej metody, jeśli chcesz, aby obszar tekstowy zarówno się kurczył, jak i powiększał.
Brant Bobby

Aby po prostu się skurczyć, wystarczy dodać ten kod przed linią 6:if (text.clientHeight == text.scrollHeight) text.style.height = "20px";
Gapipro

14

Prawdopodobnie najkrótsze rozwiązanie:

jQuery(document).ready(function(){
    jQuery("#textArea").on("keydown keyup", function(){
        this.style.height = "1px";
        this.style.height = (this.scrollHeight) + "px"; 
    });
});

W ten sposób nie potrzebujesz żadnych ukrytych elementów div ani niczego podobnego.

Uwaga: może być konieczne granie w this.style.height = (this.scrollHeight) + "px";zależności od tego, jak stylizujesz obszar tekstu (wysokość linii, dopełnienie i tego typu rzeczy).


Najlepsze rozwiązanie, jeśli nie masz nic przeciwko miganiu paska przewijania.
cfillol

Wystarczyłoby złapanie tylko zdarzenia keyup. Nie sądzisz?
cfillol

2
Ustaw właściwość textarea overflow na „hidden”, aby pasek przewijania nie migał.
cfillol

keyupmoże wystarczyć, ale nie jestem pewien. Byłem tak szczęśliwy, że to rozgryzłem, że przestałem próbować czegokolwiek innego.
Eduard Luca

Nadal próbuję się dowiedzieć, dlaczego dodałeś this.style.height = "1px"; lub this.style.height = "auto"; przed. Wiem, że textarea nie zmieni rozmiaru, gdy usuniemy zawartość, jeśli nie dodamy tej linii. Czy ktoś może chcieć wyjaśnić?
Balasubramani M

8

Oto prototypowa wersja zmiany rozmiaru obszaru tekstowego, która nie jest zależna od liczby kolumn w tym obszarze. Jest to doskonała technika, ponieważ pozwala kontrolować obszar tekstowy za pomocą CSS, a także mieć zmienną szerokość obszaru tekstowego. Ponadto ta wersja wyświetla liczbę pozostałych znaków. Chociaż nie jest to wymagane, jest to całkiem przydatna funkcja i można ją łatwo usunąć, jeśli jest niechciana.

//inspired by: http://github.com/jaz303/jquery-grab-bag/blob/63d7e445b09698272b2923cb081878fd145b5e3d/javascripts/jquery.autogrow-textarea.js
if (window.Widget == undefined) window.Widget = {}; 

Widget.Textarea = Class.create({
  initialize: function(textarea, options)
  {
    this.textarea = $(textarea);
    this.options = $H({
      'min_height' : 30,
      'max_length' : 400
    }).update(options);

    this.textarea.observe('keyup', this.refresh.bind(this));

    this._shadow = new Element('div').setStyle({
      lineHeight : this.textarea.getStyle('lineHeight'),
      fontSize : this.textarea.getStyle('fontSize'),
      fontFamily : this.textarea.getStyle('fontFamily'),
      position : 'absolute',
      top: '-10000px',
      left: '-10000px',
      width: this.textarea.getWidth() + 'px'
    });
    this.textarea.insert({ after: this._shadow });

    this._remainingCharacters = new Element('p').addClassName('remainingCharacters');
    this.textarea.insert({after: this._remainingCharacters});  
    this.refresh();  
  },

  refresh: function()
  { 
    this._shadow.update($F(this.textarea).replace(/\n/g, '<br/>'));
    this.textarea.setStyle({
      height: Math.max(parseInt(this._shadow.getHeight()) + parseInt(this.textarea.getStyle('lineHeight').replace('px', '')), this.options.get('min_height')) + 'px'
    });

    var remaining = this.options.get('max_length') - $F(this.textarea).length;
    this._remainingCharacters.update(Math.abs(remaining)  + ' characters ' + (remaining > 0 ? 'remaining' : 'over the limit'));
  }
});

Utwórz widżet, dzwoniąc new Widget.Textarea('element_id'). Domyślne opcje można nadpisać przekazując je jako obiekt, np new Widget.Textarea('element_id', { max_length: 600, min_height: 50}). Jeśli chcesz go utworzyć dla wszystkich obszarów tekstowych na stronie, zrób coś takiego:

Event.observe(window, 'load', function() {
  $$('textarea').each(function(textarea) {
    new Widget.Textarea(textarea);
  });   
});

7

Oto rozwiązanie z JQuery:

$(document).ready(function() {
    var $abc = $("#abc");
    $abc.css("height", $abc.attr("scrollHeight"));
})

abcjest teaxtarea.


5

Sprawdź poniższy link: http://james.padolsey.com/javascript/jquery-plugin-autoresize/

$(document).ready(function () {
    $('.ExpandableTextCSS').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:20,
        //Textarea height limit
        limit:10
    });
});


3

Wracając do tego, uczyniłem to trochę bardziej uporządkowanym (chociaż ktoś, kto ma pełną butelkę na Prototype / JavaScript, mógłby zasugerować ulepszenia?).

var TextAreaResize = Class.create();
TextAreaResize.prototype = {
  initialize: function(element, options) {
    element = $(element);
    this.element = element;

    this.options = Object.extend(
      {},
      options || {});

    Event.observe(this.element, 'keyup',
      this.onKeyUp.bindAsEventListener(this));
    this.onKeyUp();
  },

  onKeyUp: function() {
    // We need this variable because "this" changes in the scope of the
    // function below.
    var cols = this.element.cols;

    var linecount = 0;
    $A(this.element.value.split("\n")).each(function(l) {
      // We take long lines into account via the cols divide.
      linecount += 1 + Math.floor(l.length / cols);
    })

    this.element.rows = linecount;
  }
}

Wystarczy zadzwonić z:

new TextAreaResize('textarea_id_name_here');

3

Zrobiłem coś całkiem łatwego. Najpierw umieściłem TextArea w DIV. Po drugie, wywołałem readyfunkcję tego skryptu.

<div id="divTable">
  <textarea ID="txt" Rows="1" TextMode="MultiLine" />
</div>

$(document).ready(function () {
  var heightTextArea = $('#txt').height();
  var divTable = document.getElementById('divTable');
  $('#txt').attr('rows', parseInt(parseInt(divTable .style.height) / parseInt(altoFila)));
});

Prosty. Jest to maksymalna wysokość renderowanego elementu div podzielona przez wysokość jednego obiektu TextArea w jednym wierszu.


2

Potrzebowałem tej funkcji dla siebie, ale żadna z tych tutaj nie działała tak, jak ich potrzebowałem.

Więc użyłem kodu Oriona i zmieniłem go.

Dodałem na minimalnej wysokości, aby na zniszczeniu nie zrobiło się za małe.

function resizeIt( id, maxHeight, minHeight ) {
    var text = id && id.style ? id : document.getElementById(id);
    var str = text.value;
    var cols = text.cols;
    var linecount = 0;
    var arStr = str.split( "\n" );
    $(arStr).each(function(s) {
        linecount = linecount + 1 + Math.floor(arStr[s].length / cols); // take into account long lines
    });
    linecount++;
    linecount = Math.max(minHeight, linecount);
    linecount = Math.min(maxHeight, linecount);
    text.rows = linecount;
};

2

Podobnie jak odpowiedź @memical.

Jednak znalazłem pewne ulepszenia. Możesz użyć height()funkcji jQuery . Pamiętaj jednak o pikselach dopełniających górnych i dolnych. W przeciwnym razie obszar tekstowy będzie się rozwijał zbyt szybko.

$(document).ready(function() {
  $textarea = $("#my-textarea");

  // There is some diff between scrollheight and height:
  //    padding-top and padding-bottom
  var diff = $textarea.prop("scrollHeight") - $textarea.height();
  $textarea.live("keyup", function() {
    var height = $textarea.prop("scrollHeight") - diff;
    $textarea.height(height);
  });
});

2

Moje rozwiązanie nie używające jQuery (ponieważ czasami nie muszą być tym samym) jest poniżej. Chociaż został przetestowany tylko w przeglądarce Internet Explorer 7 , społeczność może wskazać wszystkie przyczyny tego błędu:

textarea.onkeyup = function () { this.style.height = this.scrollHeight + 'px'; }

Jak dotąd bardzo podoba mi się to, jak to działa i nie obchodzą mnie inne przeglądarki, więc prawdopodobnie zastosuję to do wszystkich moich obszarów tekstowych:

// Make all textareas auto-resize vertically
var textareas = document.getElementsByTagName('textarea');

for (i = 0; i<textareas.length; i++)
{
    // Retain textarea's starting height as its minimum height
    textareas[i].minHeight = textareas[i].offsetHeight;

    textareas[i].onkeyup = function () {
        this.style.height = Math.max(this.scrollHeight, this.minHeight) + 'px';
    }
    textareas[i].onkeyup(); // Trigger once to set initial height
}

1

Oto rozszerzenie widżetu Prototyp, które Jeremy opublikował 4 czerwca:

Uniemożliwia użytkownikowi wprowadzanie większej liczby znaków, jeśli używasz ograniczeń w obszarach tekstu. Sprawdza, czy zostały jeszcze znaki. Jeśli użytkownik skopiuje tekst do obszaru tekstowego, tekst zostanie odcięty przy max. długość:

/**
 * Prototype Widget: Textarea
 * Automatically resizes a textarea and displays the number of remaining chars
 * 
 * From: http://stackoverflow.com/questions/7477/autosizing-textarea
 * Inspired by: http://github.com/jaz303/jquery-grab-bag/blob/63d7e445b09698272b2923cb081878fd145b5e3d/javascripts/jquery.autogrow-textarea.js
 */
if (window.Widget == undefined) window.Widget = {}; 

Widget.Textarea = Class.create({
  initialize: function(textarea, options){
    this.textarea = $(textarea);
    this.options = $H({
      'min_height' : 30,
      'max_length' : 400
    }).update(options);

    this.textarea.observe('keyup', this.refresh.bind(this));

    this._shadow = new Element('div').setStyle({
      lineHeight : this.textarea.getStyle('lineHeight'),
      fontSize : this.textarea.getStyle('fontSize'),
      fontFamily : this.textarea.getStyle('fontFamily'),
      position : 'absolute',
      top: '-10000px',
      left: '-10000px',
      width: this.textarea.getWidth() + 'px'
    });
    this.textarea.insert({ after: this._shadow });

    this._remainingCharacters = new Element('p').addClassName('remainingCharacters');
    this.textarea.insert({after: this._remainingCharacters});  
    this.refresh();  
  },

  refresh: function(){ 
    this._shadow.update($F(this.textarea).replace(/\n/g, '<br/>'));
    this.textarea.setStyle({
      height: Math.max(parseInt(this._shadow.getHeight()) + parseInt(this.textarea.getStyle('lineHeight').replace('px', '')), this.options.get('min_height')) + 'px'
    });

    // Keep the text/character count inside the limits:
    if($F(this.textarea).length > this.options.get('max_length')){
      text = $F(this.textarea).substring(0, this.options.get('max_length'));
        this.textarea.value = text;
        return false;
    }

    var remaining = this.options.get('max_length') - $F(this.textarea).length;
    this._remainingCharacters.update(Math.abs(remaining)  + ' characters remaining'));
  }
});

1

@memical miał świetne rozwiązanie do ustawiania wysokości textarea na pageload z jQuery, ale w mojej aplikacji chciałem mieć możliwość zwiększania wysokości textarea, gdy użytkownik dodawał więcej treści. Zbudowałem rozwiązanie Memical z następującymi elementami:

$(document).ready(function() {
    var $textarea = $("p.body textarea");
    $textarea.css("height", ($textarea.attr("scrollHeight") + 20));
    $textarea.keyup(function(){
        var current_height = $textarea.css("height").replace("px", "")*1;
        if (current_height + 5 <= $textarea.attr("scrollHeight")) {
            $textarea.css("height", ($textarea.attr("scrollHeight") + 20));
        }
    });
});

Nie jest zbyt płynna, ale nie jest też aplikacją skierowaną do klienta, więc płynność tak naprawdę nie ma znaczenia. (Gdyby to było skierowane do klienta, prawdopodobnie użyłbym po prostu wtyczki jQuery z automatyczną zmianą rozmiaru).


1

Dla tych, którzy kodują dla IE i napotykają ten problem. IE ma małą sztuczkę, dzięki której jest w 100% CSS.

<TEXTAREA style="overflow: visible;" cols="100" ....></TEXTAREA>

Możesz nawet podać wartość dla wierszy = "n", którą IE będzie ignorować, ale inne przeglądarki będą używać. Naprawdę nienawidzę kodowania, które implementuje hacki IE, ale ten jest bardzo pomocny. Możliwe, że działa tylko w trybie Quirks.


1

Użytkownicy przeglądarek Internet Explorer, Safari, Chrome i Opera muszą pamiętać o jawnym ustawieniu wartości wysokości linii w CSS. Tworzę arkusz stylów, który ustawia początkowe właściwości dla wszystkich pól tekstowych w następujący sposób.

<style>
    TEXTAREA { line-height: 14px; font-size: 12px; font-family: arial }
</style>

1

Oto funkcja, którą właśnie napisałem w jQuery, aby to zrobić - możesz przenieść ją do Prototype , ale nie obsługują one "żywotności" jQuery, więc elementy dodane przez żądania Ajax nie będą odpowiadać.

Ta wersja nie tylko rozszerza się, ale także kurczy się po naciśnięciu klawisza Delete lub Backspace.

Ta wersja opiera się na jQuery 1.4.2.

Cieszyć się ;)

http://pastebin.com/SUKeBtnx

Stosowanie:

$("#sometextarea").textareacontrol();

lub (na przykład dowolny selektor jQuery)

$("textarea").textareacontrol();

Został przetestowany w przeglądarce Internet Explorer 7 / Internet Explorer 8 , Firefox 3.5 i Chrome. Wszystko działa dobrze.


1

Używając ASP.NET, po prostu zrób to:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Automatic Resize TextBox</title>
        <script type="text/javascript">
            function setHeight(txtarea) {
                txtarea.style.height = txtdesc.scrollHeight + "px";
            }
        </script>
    </head>

    <body>
        <form id="form1" runat="server">
            <asp:TextBox ID="txtarea" runat= "server" TextMode="MultiLine"  onkeyup="setHeight(this);" onkeydown="setHeight(this);" />
        </form>
    </body>
</html>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.