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.
-
<input type="text" id="textfield" name="textfield" />
-
<textarea rows="5" cols="5" id="areafield" name="areafield"></textarea>
-
<select id="selectfield" name="selectfield">
-
<option value="1" selected=”selected”>One</option>
-
<option value="2">Two</option>
-
</select>
-
<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.
-
<form name="myform" id="myform" method="post" action="">
-
<input type="checkbox" name="checkbox1" value="checkbox_deger1" id="checkbox1"/>
-
<label for="checkbox">Birinci seçenek</label>
-
<input type="checkbox" name="checkbox2" value="checkbox_deger2" id="checkbox2"/>
-
<label for="checkbox2">İkinci seçenek</label>
-
</p>
-
<input type="checkbox" name="checkbox3" value="checkbox_deger3" id="checkbox3"/>
-
<label for="checkbox3">Üçüncü seçenek</label>
-
</p>
-
<input name="check_all" type="button" id="check_all" value="Tümünü Seç" onclick="TumunuSec('myform');"/>
-
<input name="uncheck_all" type="button" id="uncheck_all" value="Hiçbirini seçme" onclick="HicbiriniSecme('myform');"/>
-
</p>
-
</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.
-
<script type="text/javascript">
-
<!—
-
// Prototype ı kullanmak için kendi fonksiyonlarımızı yazmalıyız
-
function TumunuSec(formid) {
-
var TumFormElemanlari = Form.getElements(formid);
-
for(i = 0; i < TumFormElemanlari.length; i++) {
-
var FormElement = TumFormElemanlari[i];
-
if ((TumFormElemanlari[i].name != 'check_all' && TumFormElemanlari[i].name != '') && TumFormElemanlari[i].type == 'checkbox'){
-
TumFormElemanlari[i].checked = true;
-
}
-
}
-
}
-
function HicbiriniSecme(formid) {
-
var TumFormElemanlari = Form.getElements(formid);
-
for(i = 0; i < TumFormElemanlari.length; i++) {
-
var FormElement = TumFormElemanlari[i];
-
if ((TumFormElemanlari[i].name != 'uncheck_all' && TumFormElemanlari[i].name != '') && TumFormElemanlari[i].type == 'checkbox'){
-
TumFormElemanlari[i].checked = false;
-
}
-
}
-
}
-
//-->
-
</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 6450 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 5 kişi aynı anda okumuş.
Bugün 1 kez okunmuş.
Etiketler: css, dom, form, javascript, kütüphane, library, orta, prototype
Trackback Yorumları takip et Baskı Önizleme

(11 oy, ortalama 4.82)
# grkn | 10 Mart 2007, 12:27
gerçekten yararlı bir makale teşekkürler..
# Ali Altuğ KOCA | 11 Mart 2007, 00:51
ç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.
# ayşe | 12 Mart 2007, 14:01
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.
# eburhan | 12 Mart 2007, 16:54
@ayşe
Evet o bir javascript kütüphanesiymiş. Vaktimiz olduğunda inceleriz inşallah
# hayat | 12 Mart 2007, 20:17
cok güzel.
# oceangray | 17 Mart 2007, 15:58
devamını sabırsızlıkla bekliyoruz…