Prototype.js Kılavuzu - 2

Hazır Kütüphaneler orhan

Geçen hafta başladığımız Prototype.js yazı dizisine devam ediyoruz. İkinci bölümde Prototype'ın form elemanlarına erişim konusundaki yardımcı fonksiyonlarını inceliyoruz.

Form İşlemleri İçin Yardımcı Fonksiyonlar

Prototype'ın form elemanlarına erişim konusundaki yardımcı fonksiyonları ile özellikle AJAX uygulamalarında oldukça pratik sonuçlar alabilmekteyiz.

$F() Fonksiyonu

Yine $() fonksiyonuna benzer bir biçimde fakat bu defa spesifik olarak form elemanlarının değerlerine (.value) erişmemizi sağlayan oldukça kullanışlı bir fonksiyondur. "Form.Element.getValue" metodu ile aynı işlevdedir.

HTML:
  1. <input type="text" id="textfield" name="textfield" />
  2. <textarea rows="5" cols="5" id="areafield" name="areafield"></textarea>
  3. <select id="selectfield" name="selectfield">
  4.     <option value="1" selected=”selected>One</option>
  5.     <option value="2">Two</option>
  6. </select>
  7. <input type="checkbox" id="checkfield" name="checkfield" value="1" checked=”checked” />

Şeklindeki bir form için aşağıdaki ifadeler yazılabilir:

$F("textfield");      // metin kutusunun (textfield) değerini dödürür
$F("areafield");      // metin alanının (textarea) içeriğini dödürür
$F("selectfield");    // açılır menülerde (dropdown) seçili değeri döndürür
$F("checkfield");     // İşaretli değilse “undefined” işaretli ise değeri döndürür

Böylece form elemanlarının değerlerine ID'leri vasıtası ile ulaşmak mümkün olmakta ve form manipülasyonları oldukça kolaylaşıp basitleşmektedir. Fakat bu fonksiyonun olumsuz bir özelliği; bazı nesnelere "$()" fonksiyonunda olduğu gibi doğrudan erişim olanağı vermemesidir. Bu durum radyo düğmelerinde seçili elemana doğrudan erişim imkânını olanaksız kılmaktadır. Radyo düğme gruplarından seçili değere ancak döngüler aracılığı ile ulaşılabilmektedir. Bu durumlar dışında fonksiyon ile ilgili bildirilen herhangi bir sorun bulunmamaktadır.

Form.getElements() Metodu

Gördüğünüz üzere "Form" objesinin bir metodu olarak çağrılan bu fonksiyon sayesinde ID'si aracılığı ile bir form etiketinin sahip olduğu tüm elemanları bir dizi değişken (array) şeklinde elde edebilmekteyiz.

TumFormElemanlari = Form.getElements("myform");
for(i = 0; i < TumFormElemanlari.length; i++) {
    // burada her bir form elemanı ile ilgili işlemler yaptırabiliyoruz
}

Burada "myform" un ilgili form etiketinin ID'si olduğunu unutmamalıyız, zira isimleri ile formlara bu fonksiyon aracılığı ile erişememekteyiz. Tüm form elemanlarına ihtiyacınız olduğu durumlarda bu fonksiyonun işlemleri nasıl kolaylaştıracağını düşündüğünüzde Prototype'ın değerini daha iyi anlayabilirsiniz. Örnek olarak bir form içindeki tüm checkbox'ları işaretleme fonksiyonu olan bir fonksiyon yazarak "Tümünü işaretle" veya "Hiçbirini işaretleme" işlevini şu şekilde yapabiliriz.

HTML:
  1. <form name="myform"   id="myform" method="post" action="">
  2.  <input type="checkbox" name="checkbox1" value="checkbox_deger1"  id="checkbox1"/>
  3.  <label for="checkbox">Birinci seçenek</label>
  4.  <p>
  5.  <input type="checkbox" name="checkbox2" value="checkbox_deger2"  id="checkbox2"/>
  6.  <label for="checkbox2">İkinci seçenek</label>
  7.  </p>
  8.  <p>
  9.  <input type="checkbox" name="checkbox3" value="checkbox_deger3"  id="checkbox3"/>
  10.  <label for="checkbox3">Üçüncü seçenek</label>
  11.  </p>
  12.  <p>
  13.  <input name="check_all" type="button"  id="check_all" value="Tümünü Seç"  onclick="TumunuSec('myform');"/>
  14.  <input name="uncheck_all" type="button"  id="uncheck_all" value="Hiçbirini seçme"   onclick="HicbiriniSecme('myform');"/>
  15.  </p>
  16.  </form>

Bu şekilde bir formumuz olduğunu düşünelim. Bir düğmeye ya da linke tıklandığında formdaki bütün checkbox'ları seçtirmek / seçtirmemek için ufak bir fonksiyon yazıyoruz.

JAVASCRIPT:
  1. <script type="text/javascript">
  2.  <!—
  3.  // Prototype ı kullanmak  için kendi fonksiyonlarımızı yazmalıyız
  4.  function TumunuSec(formid)  {
  5.        var TumFormElemanlari =  Form.getElements(formid);
  6.        for(i = 0; i < TumFormElemanlari.length; i++) {
  7.              var FormElement =  TumFormElemanlari[i];
  8.              if ((TumFormElemanlari[i].name  != 'check_all' && TumFormElemanlari[i].name != '') &&  TumFormElemanlari[i].type == 'checkbox'){
  9.                    TumFormElemanlari[i].checked  = true;
  10.                    }
  11.              }
  12.  }
  13.  function HicbiriniSecme(formid)  {
  14.        var TumFormElemanlari =  Form.getElements(formid);
  15.        for(i = 0; i < TumFormElemanlari.length; i++) {
  16.              var FormElement =  TumFormElemanlari[i];
  17.              if ((TumFormElemanlari[i].name  != 'uncheck_all' && TumFormElemanlari[i].name != '') &&  TumFormElemanlari[i].type == 'checkbox'){
  18.                    TumFormElemanlari[i].checked  = false;
  19.                    }
  20.              }
  21.  }
  22.  //-->
  23.  </script>

Gördüğünüz gibi düğmelerin "onclick" olayına (event) yazdığımız fonksiyonları çağırıyoruz. Böylece fonksiyonlara dolayısıyla form elemanlarına ulaşabiliyoruz.

Sayfalar: 1 2

Toplamda 6477 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 5 kişi aynı anda okumuş.
Bugün 4 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (11 oy, ortalama 4.82) Oylanıyor ... Oylanıyor ...

  1. PHP ve Yerleşik DOM Sınıfları
  2. Javascript Sanal Klavye Yapalım
  3. Ajax Olmasaydı Ne Yapardık ? :)

Trackback Yorumları takip et Baskı Önizleme

6 yorum var

  1. # grkn | 10 Mart 2007, 12:27 Gravatar

    gerçekten yararlı bir makale teşekkürler..

  2. # Ali Altuğ KOCA | 11 Mart 2007, 00:51 Gravatar

    çok güzel bir makale olmuş arkadaşlar emeklerine sağlık.en çok kullanılan prototype kütüphanesini tanıtarak büyük bir iş yapıyorsun kutlarım.

  3. # ayşe | 12 Mart 2007, 14:01 Gravatar

    http://cross-browser.com/x/lib/
    Yukarıdaki sitede de galiba bir x kütüphanesi var. Onlar da javascript ile mi ilgili? Javascript ile ilgiliyse eğer, birgün onları da anlatacak mısınız? Teşekkürler.

  4. # eburhan | 12 Mart 2007, 16:54 Gravatar

    @ayşe
    Evet o bir javascript kütüphanesiymiş. Vaktimiz olduğunda inceleriz inşallah :)

  5. # hayat | 12 Mart 2007, 20:17 Gravatar

    cok güzel.

  6. # oceangray | 17 Mart 2007, 15:58 Gravatar

    devamını sabırsızlıkla bekliyoruz…

Yorum yazın

sayfa sayacı