Prototype Kullanarak Bir Textarea’nın Boyutunu Nasıl Otomatik Ayarlarsınız

Web uygulamaları için form tasarlarken, kullanıcı deneyimi (UX) çok önemlidir. Birçok geliştiricinin karşılaştığı ortak bir zorluk, kullanıcı tarafından girilen içeriğe bağlı olarak otomatik olarak boyutunu ayarlayan bir textarea oluşturmaktır. Bu özellik, formların estetiğini artırmakla kalmaz, aynı zamanda kullanıcıların tüm girdilerini gereksiz yere kaydırmadan görüntülemelerini sağlar. Bu yazıda, Prototype JavaScript framework’ünün yardımıyla bir textarea için otomatik boyutlandırmayı nasıl uygulayacağımızı keşfedeceğiz.

Problem

Durumu belirleyelim. Bir iç satış uygulamasında çalıştığınızı hayal edin; burada kullanıcıların bir textarea içinde teslimat adreslerini doldurması gerekiyor. Sabit boyutlu bir textarea, oldukça fazla dikey alan kaplayabilir ve adres çoklu satırlara yayılmışsa tüm içeriği düzgün bir şekilde gösteremeyebilir. Kaydırma çubukları kullanmak, kullanıcı deneyimini önemli ölçüde azaltabilir, bu nedenle daha iyi bir çözüme ihtiyaç vardır.

Gereksinimler

  • Dikey Yeniden Boyutlandırma: Kullanıcı daha fazla satır yazdıkça textarea yukarıdan aşağıya genişlemelidir.
  • Sabit Genişlik: Genişlik tutarlı olmalı, ancak dikey yeniden boyutlandırma kadar önemli olmamalıdır.

Çözüm

Neyse ki, bunu Prototype.js kullanarak kolay bir şekilde gerçekleştirmek mümkündür. Aşağıda, basit bir JavaScript fonksiyonu ile otomatik boyutlandırma içeren bir textarea’nın nasıl uygulanacağını anlatacağım.

Adım 1: HTML Yapısını Kurma

Öncelikle, textarea’nız için temel HTML yapısını oluşturmalısınız. İşte basit bir uygulama:

<!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>
    </body>
</html>

Adım 2: JavaScript Fonksiyonu Yazma

Sonraki adımda, otomatik boyutlandırmayı yönetecek bir JavaScript fonksiyonuna ihtiyacımız var. İşte bunun nasıl çalıştığı:

  1. Textarea’nın mevcut değerini alın.
  2. Metni satırlara ayırın, yeni satır karakterlerine dayalı olarak.
  3. Textarea genişliği temelinde satır sayısını hesaplayın.
  4. rows niteliğini buna göre ayarlayın.

İşte kod:

<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); // Uzun satırları da hesaba katın
        })
        $('text-area').rows = linecount + 1; // Satır sayısını artır
    };

    // Fonksiyonu keydown olayına bağlayın
    Event.observe('text-area', 'keydown', resizeIt);
    
    resizeIt(); // Başlangıç için fonksiyonu bir kez çağır
</script>

Adım 3: Başlatma

Fonksiyon, belge yüklendiğinde hemen çağrılır, böylece textarea mevcut içeriklere göre uygun şekilde boyutlandırılır.

Test ve Ayarlamalar

  • Fonksiyonu test edin: Textarea’ya yazmayı deneyin ve nasıl yeniden boyutlandığını görün.
  • Gerekirse iyileştirin: Özel kullanım durumunuza ne kadar iyi uyduğuna bağlı olarak, uç durumlar için ayarlamalar gerekebilir.

Son Düşünceler

Otomatik boyutlandırma özelliğine sahip bir textarea uygulamak, formlardan gereksiz karmaşayı kaldırarak daha akıcı bir kullanıcı deneyimi yaratabilir. Verilen örnek, Prototype JS framework’ü kullanarak temel bir uygulamayı göstermektedir, ancak daha karmaşık gereksinimlere uyacak şekilde genişletilebilir veya değiştirilebilir.

Bu çözümü paylaşıp, kendi değişikliklerinizi tartışmak isterseniz, lütfen benimle iletişime geçmekten çekinmeyin!