Form Nesnesi

Bir önceki sayfamızda form nesnesinin hiyerarşi sıralamasında sayfa nesnesinden sonra geldiğini ve forms ismiyle bir dizi oluşturduğunu görmüştük. Bu sayfada form nesnesini kullanmayı öğreneceğiz

www.dijitalders.com


Form Komutları

Sayfadaki form nesnelerini, name parametresiyle tanımladığımız isimler aracılığıyla çağırabiliriz: document.forms.yeniform gibi. Form komutlarını da bu kök üzerine yerleştiririz. Form komutlarını topluca listeledim.
action     Formun işlem sayfasına girmesini sağlar.
method     Formun metodunu girer (post/get).
reset()     Form bilgilerini siler (resetler).
submit()     Form bilgilerini girer.
acceptCharset     İstemcinin (server'ın) desteklediği karakter listesini girer.
elements     Form elemanlarını bir dizi haline getirerek girer.

Bu komutlar üzerinde şimdilik fazla durmayalım, çünkü henüz bu tip bir uygulama yapmaya bilgilerimiz yeterli değil. ASP ve CGI derslerimizde bu komutları fazlasıyla kullanacağız. Yine de bazılarının işlevini sizler anlamışsınızdır. Çoğu okuyucunun Ziyaretçi Defteri, Bilgi Giriş Formu, Tartışma Forumu, Arama Motoru yapmak için sabırsızlandığını hatta için için henüz göstermediğim için bana kızdığını biliyorum. :) Ama şunu belirtmeliyim ki bu tip araçları sadece HTML ve JavaScript ile yapamazsınız. JavaScript bilgileri saklamaz, depolamaz, veri tabanı oluşturmaz; sadece sayfa yüklüyken değişkenlerinde veri tutabilir. Herşeyi hemen yapmak isteyen arkadaşlar birazcık sabretsin ve bu sayfanın altındaki bilgileri öğrenmeye çalışsınlar. CGI ve ASP derslerinde acısını çıkaracağız ama önce bir script dilini çok iyi öğrenmek gerekir.
Bilgi Giriş Elemanları

Bilgi giriş elemanlarının (düğme, metin kutusu, kontrol kutusu,vb.) yapısını HTML derslerimizde görmüştük. O sayfada form araçlarının parametreleri de tanıtılmıştı. İstersek o parametreleri JavaScript koduyla tanımlayabiliriz. Örneğin metin kutusunun uzunluğunu karakter cinsinden belirleyen size parametresini JavaScript kodlarıyla tanımlayalım:
<html> <head> <title>Size Parametresi,</title> <script language="JavaScript"> function uzunluk(x) { document.forms.Form1.mesaj.size=x } </script> </head> <body> <form name="Form1"> Notunuz:<input name="mesaj"><br><br> <table cellpadding="0" cellspacing="0" border="0" width="400"><tr> <td><input type="button" onclick="uzunluk(10)" value="Kısa Not"></td> <td><input type="button" onclick="uzunluk(40)" value="Orta Not"></td> <td><input type="button" onclick="uzunluk(70)" value="Uzun Not"></td> </tr></table> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

size parametresi öğrendiklerimizden sadece bir tanesi. Diğer parametreleri de bu şekilde kullanabiliriz. Örneğin maksimum karakter girişini belirlemek için document.forms.Form1.mesaj.maxlength kodundan yararlanabiliriz. Gerisini sizlerin yaratıcılığına bırakayım.

Hatırlarsanız, bir de value parametresi vardı. Bu parametreyle metin kutusuna yazı yazdırabiliyorduk. JavaScript kodlarıyla bu parametreyi, metin kutusuna yazılı olan ifadeyi değişkenlere aktarmak için kullanabiliriz:
<html> <head> <title>Form Sayfası,</title> <script language="JavaScript"> function gir() { bilgi1.innerHTML=document.forms.kimlik.veri1.value bilgi2.innerHTML=document.forms.kimlik.veri2.value bilgi3.innerHTML=document.forms.kimlik.veri3.value bilgi4.innerHTML=document.forms.kimlik.veri4.value bilgi5.innerHTML=document.forms.kimlik.veri5.value } </script> </head> <body> <form name="kimlik"> Adınız:<input name="veri1">   SoyAdınız:<input name="veri2"><br> Yaşınız:<input name="veri3">   Cinsiyetiniz:<input name="veri4">   Telefonunuz:<input name="veri5"><br><br> <input type="button" value="Bilgileri Tabloya Gir" onclick="gir()"><br><br> <table cellpadding="5" cellspacing="0" border="1"> <tr><td width="100">Adı:</td><td id="bilgi1" width="300"> </td></tr> <tr><td>SoyAdı:</td><td id="bilgi2"> </td></tr> <tr><td>Yaşı:</td><td id="bilgi3"> </td></tr> <tr><td>Cinsiyeti:</td><td id="bilgi4"> </td></tr> <tr><td>Telefonu:</td><td id="bilgi5"> </td></tr> </table> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Bu uygulamayla bir Bilgi Giriş Formu yaptık aslında. Ama bir farkla, girdiğimiz bilgiler pencere kapatılınca yok oluyor. Buradan şu sonucu çıkartabilirsiniz: JavaScript bilgileri aktarmaya ve dönüştürmeye yarar ancak o bilgileri saklamaya yaramaz. Bunun için veri tabanı gereklidir ve bu veri tabanını CGI ve ASP derslerimizde oluşturacağız. Sanırım şimdi daha iyi anlaşıldı.

Veri tabansız da birçok güzel şey yapılabiliniyor. Son uygulamamızı anlayan arkadaşlar rahatlıkla basit bir hesap makinesi yapabileceklerdir. Normal metin kutusu ve düğmeler yerine resimler de kullanılabilinir. İsterseniz deneyin, zor bir tarafı yok. Ders sayfalarının sonunda yer alan Hesap Makineleri örneklerine de bakabilirsiniz.

Kontrol kutularını seçmek için checked parametresini true değeri verebiliriz veya bunu JavaScript ile document.forms.form1.kontrolkutusu1.checked=true şeklinde ifade edebiliriz. Hatırlayacağınız üzere; radyo kutusunun işlevi gereği sadece birinin seçilmesi için, her kutuya aynı ismi veriyorduk. Bu durumda yukarıda yazıldığı gibi name özelliğini kullanamayız ama id parametresini kullanarak bu sorunu halledebiliriz. Aşağıdaki uygulamaya bakalım.
<html> <head> <title>Bundylogy Sorusu,</title> <script language="JavaScript"> function cevap() { if (document.soru.rad3.checked==true) paragraf.innerHTML="En doğru cevabı işaretlediniz. Bravooo!" else paragraf.innerHTML="Doğru ama en doğru değil, Al Bundy mantığıyla düşünün." } </script> </head> <body> <form name="soru"> <b>Al Bundy soruyor:</b>Marcy Darcy kimdir? (Doğruluk derecesi en yüksek olanı işaretleyin lütfen...)<br> <label for="rad1"> <input type="radio" id="rad1" name="radyo"> Part time çalışan bir paperboy'dur. </label><br> <label for="rad2"> <input type="radio" id="rad2" name="radyo"> Jefferson Darcy'nin kocasıdır. </label><br> <label for="rad3"> <input type="radio" id="rad3" name="radyo"> Bir tavuktur. </label><br> <label for="rad4"> <input type="radio" id="rad4" name="radyo"> Materyalist ruhu gelişkin bir banka çalışanıdır. </label><br> <label for="rad5"> <input type="radio" id="rad5" name="radyo"> Bundy'lerin komşusudur. </label><br> <input type="button" value="Değerlendir" onclick="cevap()"> <p id="paragraf">Doğru seçeneği işaretlediğinizden eminseniz, yukarıdaki düğmeye basın.</p> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Sözün özü, tüm parametreleri komut haline getirebiliyoruz. Bunun yanısıra Form Elemanları için kullanılan başka komutlar da var:
focus()     Tanımlanan bilgi giriş aracına odaklanmayı sağlar.
blur()     Tanımlanan bilgi giriş aracının odak halinden çıkmasını sağlar.
click()     Tanımlanan bilgi giriş aracını tıklamaya yarar.
select()     Tanımlanan bilgi giriş aracının seçili hale gelmesini sağlar..

Tüm bu komutların yer aldığı öğretici bir uygulama yapalım:
<html> <head> <title>Bilgi giriş eleman komutları,</title> <script language="JavaScript"> function komut(x) { switch(x) { case 1: document.form1.metinkutusu.select() break case 2: document.form1.metinkutusu.focus() break case 3: document.form1.metinkutusu.blur() break case 4: document.form1.dugme.click() } } </script> </head> <body> <form name="form1"> <input name="metinkutusu" value="metin kutusu">   <input type="button" name="dugme" value="uyarı düğmesi" onclick="alert('Alarm!!!')"><br><br> <input type="button" value="Metin kutusuna odaklan" onclick="komut(2)"><br> <input type="button" value="Metin kutusundaki yazıyı seç" onclick="komut(1)"><br> <input type="button" value="Metin kutusunu seçili halden çıkar" onclick="komut(3)"><br> <input type="button" value="Uyarı düğmesine bas" onclick="komut(4)"><br> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Bu uygulamamızı irdeleyelim biraz: select() komutu form aracını seçili hale getiriyor ve odaklıyor. Yani ayrıca odaklamamıza gerek kalmıyor, üzerine blur() komutunu uygularsak, odaklanma kalkıyor ama seçili hal devam ediyor tabi.
Seçenek Kutusu

HTML derslerinde seçenek kutusunun nasıl görüntülendiği anlatılmıştı ama nasıl kullanıldığı üzerine birşey söylenilmemişti. Şimdi söyleyelim. Seçenek kutusunda kullanıcının işaretlediği seçeneği selectedIndex komutuyla indeks (sıra) numarası cinsinden ifade ediyoruz:
<html> <head> <title>Seçenek Kutusu İndeksleri,</title> <script language="JavaScript"> function sec() { var x=document.sira_no.yazar.selectedIndex alert(x+1) } </script> </head> <body> <form name="sira_no"> <select name="yazar" <option>Mario Llosa Vargas <option>Amin Maalouf <option>John Steinback <option>Ursula K. Leguin <option>Panait Istrati </select>     <input type="button" value="Kaçıncı Seçenek" onclick="sec()"> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Bu uygulama, kullanıcının seçtiği seçeneğin sıra numarasını gösteriyor. selectedIndex komutu ile seçeneğe 0 (sıfır) değeri verdiğinden, uygulamada sıra numarasını x+1 şeklinde ifade ettik.

Seçenek kutusundaki seçenekler options isimli bir dizi oluşturur. İlk seçenek options[0] şeklinde belirtilir. options[0].text ise, ilk seçeneği metinsel değer olarak ifade eder. Önceki uygulamada kullanıcının seçtiği seçeneğin sıra numarasını ifade ediyorduk. Sıra numarası yerine, seçeneği doğrudan nasıl ifade edebiliriz?
<html> <head> <title>Seçenek Kutusu: Seçilen Seçeneği Gösterme,</title> <script language="JavaScript"> function sec() { var x=document.secenek.yazar.selectedIndex var y=document.secenek.yazar.options[x].text alert(y) } </script> </head> <body> <form name="secenek"> <select name="yazar" <option>Mario Llosa Vargas <option>Amin Maalouf <option>John Steinback <option>Ursula K. Leguin <option>Panait Istrati </select>     <input type="button" value="Hangi Seçenek" onclick="sec()"> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Ne yaptık? Kullanıcının seçtiği seçeneği sıra sayısı cinsinden ifade ettik. (selectedIndex ile) Sonra seçilen sıra numarasını options dizini ve text komutu sayesinde metinsel değere dönüştürdük. text yerine index komutu kullansaydık, yine sıra numarası elde edecektik.

Dilersek text komutunu seçeneklerin metnini değiştirmek için kullanabiliriz.
<html> <head> <title>Seçenek Kutusu Seçenek Değiştirme,</title> <script language="JavaScript"> function secenekekle() { var x=document.forms.secenek.adsoyad.value var y=document.secenek.yazar.selectedIndex document.secenek.yazar.options[y].text=x } </script> </head> <body> <form name="secenek"> <select name="yazar" <option>Mario Llosa Vargas <option>Amin Maalouf <option>John Steinback <option>Ursula K. Leguin <option>Panait Istrati </select><br> Yazar ismi:  <input name="adsoyad" size="80">     <input type="button" value="Seçeneği Değiştir" onclick="secenekekle()"> </form> </body> </html>
[Sayfayı göster] [Temizle] [İlk haline getir]

Seçenek kutusunu düğmeyle beraber kullanmak zorunda değiliz. Seçenek kutusunda başka bir seçeneği işaretlediğimiz zaman işlem yapılacaksa onchange olayı kullanılmalıdır.
<html> <head> <title>Seçenek Kutusu: OnChange Olayı,</title> <script language="JavaScript"> function degistir() { var x=document.secenek.yazar.selectedIndex yazi.innerHTML=document.secenek.yazar.options[x].text } </script> </head> <body> <form name="secenek" onchange="degistir()"> <select name="yazar"> <option>Mario Llosa Vargas <option>Amin Maalouf <option>John Steinback <option>Ursula K. Leguin <option>Panait Istrati </select><br> <p id="yazi">Seçeneği değiştiriniz...</p> </form> </body> </html>

Kaynak www.volkanderinbay.net/ders/dersjscr.asp
Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...