Prototip kullanarak bir metin alanı nasıl otomatik boyutlandırılır?


121

Şu anda çalıştığım şirket için dahili bir satış uygulaması üzerinde çalışıyorum ve kullanıcının teslimat adresini değiştirmesine izin veren bir formum var.

Şimdi, ana adres ayrıntıları için kullandığım metin alanı içindeki metnin alanını kaplar ve metin değiştirilirse otomatik olarak yeniden boyutlandırırsa, çok daha güzel görüneceğini düşünüyorum.

İşte şu anda bir ekran görüntüsü.

ISO Adresi

Herhangi bir fikir?


@Chris

İyi bir nokta, ancak yeniden boyutlandırmasını istediğim nedenler var. Kapladığı alanın, içerdiği bilgilerin alanı olmasını istiyorum. Ekran görüntüsünde görebileceğiniz gibi, sabit bir metin alanım varsa, oldukça fazla dikey alan kaplar.

Yazı tipini azaltabilirim, ancak adresin büyük ve okunabilir olması gerekiyor. Artık metin alanının boyutunu küçültebilirim, ancak 3 veya 4 (biri 5) satır alan bir adres satırına sahip insanlarla sorun yaşıyorum. Kullanıcının bir kaydırma çubuğu kullanmasını sağlamak büyük bir hayırdır.

Sanırım biraz daha spesifik olmalıyım. Dikey yeniden boyutlandırmanın peşindeyim ve genişlik o kadar önemli değil. Bununla ortaya çıkan tek sorun, pencere genişliği çok küçük olduğunda (ekran görüntüsünde görebileceğiniz gibi) ISO numarasının (büyük "1") adresin altına itilmesidir.

Bir gimick sahibi olmakla ilgili değil; Bu, kullanıcının düzenleyebileceği, gereksiz yer kaplamayan, ancak içindeki tüm metni gösterecek bir metin alanına sahip olmakla ilgilidir.

Gerçi birisi soruna yaklaşmanın başka bir yolunu bulursa ben de buna açığım.


Kodu biraz değiştirdim çünkü biraz tuhaf davranıyordu. Onu keyup'ta etkinleştirmek için değiştirdim çünkü yeni yazılan karakteri hesaba katmazdı.

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;
};

Bunu işyerinde görebileceğimiz bir demo sitesi oluşturabilir misiniz?
Einar Ólafsson

3
bu eklenti iyi görünüyor jacklmoore.com/autosize
Gaurav Shah

JQuery versiyonu var mı? JQuery'de bir TextArea öğesinin sütunlarına ve satırlarına nasıl erişilir?
Zach

Neredeyse aynı, ancak metin kaldırıldığında daha da küçülmesi gereken açık bir gereksinimle: stackoverflow.com/questions/454202/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Yanıtlar:


75

Facebook bunu, insanların duvarlarına yazdığınızda yapar, ancak yalnızca dikey olarak yeniden boyutlandırır.

Yatay yeniden boyutlandırma, kelime kaydırma, uzun satırlar vb. Nedeniyle karmaşa oluşturuyor, ancak dikey yeniden boyutlandırma oldukça güvenli ve hoş görünüyor.

Tanıdığım Facebook kullanan acemilerin hiçbiri bunun hakkında bir şey söylemedi veya kafası karışmadı. Bunu 'devam et, uygula' demek için anekdot kanıtı olarak kullanırdım.

Prototip kullanarak bunu yapmak için bazı JavaScript kodları (çünkü aşina olduğum şey budur):

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

Not: Açıkçası bu JavaScript kodu çok saftır ve iyi test edilmemiştir ve muhtemelen içinde roman bulunan metin kutularında kullanmak istemezsiniz, ancak genel fikri anladınız.


2
Bu, tarayıcının herhangi bir karakterde hatalı olduğunu varsayar. Deneyin <textarea cols='5'>0 12345 12345 0</textarea>. (Neredeyse aynı bir uygulama yazdım ve bunu kullandıktan bir ay sonrasına kadar yakalayamadım.) Ayrıca boş satırlar için de başarısız oluyor.
st-boost

Bunun için bir JQuery sürümü var mı?
emeraldhieu

$ A (str.split ("\ n")) içindeki ters eğik çizginin başka birine ihtiyacı var. (Yukarıdaki cevaba ilişkin düzenlemem herhangi bir nedenle hayatta kalmadı.)
gherson

67

Bu yanıtlardan bazılarının iyileştirilmesi, CSS'nin daha fazla iş yapmasına izin vermektir.

Temel rota şöyle görünüyor:

  1. textareaVe gizli tutmak için bir kap öğesi oluşturundiv
  2. Javascript kullanarak, tutmak textarea'ile senkronize ın içeriğini divs'
  3. Tarayıcının bu div'in yüksekliğini hesaplama işini yapmasına izin verin
  4. Tarayıcı, gizli olanı oluşturmayı / boyutlandırmayı işlediğinden div, açıkça textareayüksekliğini ayarlamaktan kaçınırız .

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
Bu harika bir çözüm! Tek uyarı, kutu boyutlandırmayı (IE <7) desteklemeyen tarayıcıların genişliği düzgün bir şekilde hesaplamaması ve bu nedenle bir miktar doğruluğu kaybedeceğinizdir, ancak sonunda bir satırlık boşluk bırakıyorsanız, hala iyi olmalısın. Sadeliği için kesinlikle seviyorum.
Antonio Salazar Cardozo

4
Bu çözümü bağımsız, kullanımı basit, jQuery eklentisi olarak, biçimlendirme veya stil gerektirmeden uygulama konusunda özgürdüm. xion.io/jQuery.xarea birisinin kullanması durumunda :)
Xion

2
textCopy'yi gizli olarak ayarlamak, gizli div'in işaretlemede yer kaplamasına izin verir, böylece textCopy içeriği büyüdükçe, sonunda sayfanızın tüm uzunluğu boyunca bir kaydırma çubuğu alırsınız ...
topwik

1
Buna bir başka güzel ayar; var text = $("#textArea").val().replace(/\n/g, '<br/>') + '&nbsp;';gizli div nbsp'ye kaydırmayı garantilediğinden, metin alanının sonundaki boş yeni bir satırdan boş olmayan bir satıra geçerken sarsıntılı davranışlar yaşamamanızı sağlar.
kasıtsız

1
@ '& nbsp;' eklemeyle ilgili harika bir çağrı ilk harfi yeni bir satıra eklediğinizde ortaya çıkan ani boyut artışından kurtulmak için - bence bu olmadan kırılmış - bu yanıta eklenmelidir!
davnicwil

40

İşte bir metin alanını otomatikleştirmek için başka bir teknik.

  • Satır yüksekliği yerine piksel yüksekliği kullanır: orantılı bir font kullanılırsa satır kaydırmanın daha doğru işlenmesi.
  • Giriş olarak kimliği veya öğeyi kabul eder
  • İsteğe bağlı bir maksimum yükseklik parametresini kabul eder - metin alanının belirli bir boyutun ötesine büyümesine izin vermezseniz kullanışlıdır (tümünü ekranda tutun, düzeni bozmayın, vb.)
  • Firefox 3 ve Internet Explorer 6'da test edildi

Kod: (sade vanilya 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: (jQuery kullanır, şu anda yazdığım metin alanındaki hedefler - Firebug yüklüyse, her iki örneği de konsola yapıştırın ve bu sayfada test edin)

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

@SMB - bu muhtemelen uygulamak çok zor olmaz, sadece başka bir koşul ekleyin
Jason

@ Jason: Kutudaki metin onu doldurmadığında clientHeightve scrollHeighteşit olduğunda, metin alanınızın küçülmesini ve büyümesini istiyorsanız bu yöntemi kullanamazsınız.
Brant Bobby

Basitçe küçültmek için, bu kodu 6. satırdan önce eklemeniz yeterlidir:if (text.clientHeight == text.scrollHeight) text.style.height = "20px";
Gapipro

14

Muhtemelen en kısa çözüm:

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

Bu şekilde herhangi bir gizli bölmeye veya bunun gibi bir şeye ihtiyacınız olmaz.

Not: this.style.height = (this.scrollHeight) + "px";Metin alanını nasıl biçimlendirdiğinize bağlı olarak (satır yüksekliği, dolgu ve benzeri şeyler) oynamak zorunda kalabilirsiniz .


Kaydırma çubuğunun yanıp sönmesine aldırmazsanız en iyi çözüm.
cfillol

Sadece keyup olayını yakalamak yeterli olacaktır. Öyle değil mi
cfillol

2
Kaydırma çubuğunun yanıp sönmesini önlemek için textarea overflow özelliğini "hidden" olarak ayarlayın.
cfillol

keyupyeterli olabilir, ama emin değilim. O kadar mutlu oldum ki anladım, başka bir şey denemeyi bıraktım.
Eduard Luca

Hala this.style.height = "1px" nedenini eklediğinizi öğrenmeye çalışıyorum; veya this.style.height = "auto"; önce. Bu satırı eklemezsek içeriği kaldırdığımızda metin alanının yeniden boyutlandırılmayacağını biliyorum. Biri açıklamak ister mi?
Balasubramani M

8

Metin alanındaki sütun sayısına bağlı olmayan bir metin alanını yeniden boyutlandırmanın bir Prototip sürümü. Bu üstün bir tekniktir çünkü metin alanını CSS aracılığıyla kontrol etmenize ve değişken genişlikte metin alanına sahip olmanıza izin verir. Ek olarak, bu sürüm kalan karakter sayısını gösterir. İstenmese de oldukça kullanışlı bir özelliktir ve istenmediği takdirde kolayca kaldırılabilir.

//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'));
  }
});

Arayarak widget'ı oluşturun new Widget.Textarea('element_id'). Varsayılan seçenekler, bir nesne olarak iletilerek geçersiz kılınabilir, örneğin new Widget.Textarea('element_id', { max_length: 600, min_height: 50}). Sayfadaki tüm metin alanları için oluşturmak istiyorsanız, aşağıdaki gibi bir şey yapın:

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

7

İşte şununla bir çözüm JQuery:

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

abcbir teaxtarea.


5

Aşağıdaki bağlantıyı kontrol edin: 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

Sadece bunu tekrar gözden geçirerek, biraz daha düzenli hale getirdim (yine de Prototip / JavaScript ile dolu olan biri iyileştirmeler önerebilir mi?).

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;
  }
}

Sadece şunu çağırır:

new TextAreaResize('textarea_id_name_here');

3

Oldukça kolay bir şey yaptım. Önce TextArea'yı bir DIV'ye koydum. İkinci olarak, readybu komut dosyasının işlevini çağırdım .

<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)));
});

Basit. Bu, oluşturulduktan sonra div'in maksimum yüksekliğinin, bir satırın bir TextArea öğesinin yüksekliğine bölümüdür.


2

Bu işleve kendim için ihtiyacım vardı, ancak buradakilerin hiçbiri ihtiyacım olduğu gibi çalışmadı.

Ben de Orion'un kodunu kullandım ve değiştirdim.

Asgari bir yükseklik ekledim, böylece yıkımda çok küçük olmaz.

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

@Memical'in cevabı gibi.

Ancak bazı iyileştirmeler buldum. JQuery height()işlevini kullanabilirsiniz . Ancak üst ve alt dolgu piksellerine dikkat edin. Aksi takdirde, metin alanınız çok hızlı büyüyecektir.

$(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

Benim çözümüm jQuery kullanmamak (çünkü bazen aynı şey olmak zorunda değiller) aşağıdadır. Yalnızca Internet Explorer 7'de test edilmiş olmasına rağmen , topluluk bunun yanlış olmasının tüm nedenlerine işaret edebilir:

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

Şimdiye kadar nasıl çalıştığını gerçekten beğendim ve diğer tarayıcıları umursamıyorum, bu yüzden muhtemelen tüm metin alanıma uygulayacağım:

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

İşte Jeremy'nin 4 Haziran'da yayınladığı Prototip widget'ının bir uzantısı:

Metin alanlarında sınır kullanıyorsanız, kullanıcının daha fazla karakter girmesini durdurur. Kalan karakter olup olmadığını kontrol eder. Kullanıcı, metni metin alanına kopyalarsa, metin maksimumda kesilir. uzunluk:

/**
 * 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 , jQuery ile pageload üzerindeki textarea yüksekliğini ayarlamak için harika bir çözüme sahipti, ancak benim uygulamam için, kullanıcı daha fazla içerik ekledikçe textarea yüksekliğini arttırabilmek istedim. Memical'ın çözümünü aşağıdakilerle oluşturdum:

$(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));
        }
    });
});

Çok pürüzsüz değil ama aynı zamanda müşteriye yönelik bir uygulama değil, bu nedenle pürüzsüzlük gerçekten önemli değil. (Bu, istemciye dönük olsaydı, muhtemelen bir otomatik yeniden boyutlandırma jQuery eklentisi kullanırdım.)


1

IE için kodlama yapanlar ve bu problemle karşılaşanlar için. IE'nin% 100 CSS yapan küçük bir numarası var.

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

Satır = "n" için IE'nin göz ardı edeceği, ancak diğer tarayıcıların kullanacağı bir değer bile sağlayabilirsiniz. IE hack'lerini uygulayan kodlamadan gerçekten nefret ediyorum, ancak bu çok yardımcı oluyor. Yalnızca Quirks modunda çalışması mümkündür.


1

Internet Explorer, Safari, Chrome ve Opera kullanıcılarının CSS'de satır yüksekliği değerini açıkça belirlemeyi unutmamaları gerekir. Tüm metin kutuları için başlangıç ​​özelliklerini aşağıdaki gibi ayarlayan bir stil sayfası yapıyorum.

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

1

İşte jQuery'de bunu yapmak için yazdığım bir işlev - onu Prototip'e taşıyabilirsiniz , ancak bunlar jQuery'nin "canlılığını" desteklemiyor, bu nedenle Ajax istekleri tarafından eklenen öğeler yanıt vermiyor.

Bu sürüm yalnızca genişlemekle kalmaz, aynı zamanda sil veya geri al tuşuna basıldığında da daralır.

Bu sürüm jQuery 1.4.2'ye dayanmaktadır.

Zevk almak ;)

http://pastebin.com/SUKeBtnx

Kullanımı:

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

veya (herhangi bir jQuery seçici)

$("textarea").textareacontrol();

Internet Explorer 7 / Internet Explorer 8 , Firefox 3.5 ve Chrome'da test edilmiştir . Her şey yolunda.


1

ASP.NET kullanarak şunu yapmanız yeterlidir:

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.