İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

jQuery Jump Menü

AycanB

0
İyinet Üyesi
Katılım
13 Ocak 2008
Mesajlar
201
Reaction score
3
Merhaba arkadaşlar hemen hemen 2 aydır makale yazamıyordum yoğunluktan, bugün müşterimin beni ekmesi ve bir arkadaşım benden böyle bir menü isteyince hemen bu boşluğu makaleye çevirmeye çalıştım. Herzaman olduğu gibi bu uygulamaya tam isim vermedim.
Uygulama hakkında : İl – İlçe seçimi gibi ana ve alt kategori seçimli olan menuler için yazdım.

Ön izleme :
ab-jumpMenu.PNG


Hemen kodlara geçecek olursak

Html kodları ;

Kod:
<select class="anaSelect" onchange="abjumpMenu();">
    <option value="1">Amasya</option>
    <option value="2">Erzurum</option>
    <option value="3">İzmir</option>
    <option value="4">Kıbrıs</option>
</select>
<input type="text" id="anaDeger"/>
<select class="altSelect altSelect1" style="display: none;">
    <option value="seciniz">Lütfen Seçiniz</option>
    <option value="a">Merzifon</option>
    <option value="b">Gümüş Hacıköy</option>
    <option value="c">Hıra</option>
    <option value="d">Kaya Düzü</option>
    <option value="e">Dip Hacı</option>
    <option value="f">Kop gel</option>
    <option value="g">Günahlarından</option>
</select>
<select class="altSelect altSelect2" style="display: none;">
    <option value="seciniz">Lütfen Seçiniz</option>
    <option value="a">Hasan Kale</option>
    <option value="b">Yakutiye</option>
    <option value="c">Hınıs</option>
    <option value="d">İspir</option>
    <option value="e">Aşkale</option>
</select>
<select class="altSelect altSelect3" style="display: none;">
    <option value="seciniz">Lütfen Seçiniz</option>
    <option value="a">Ali Ağa</option>
    <option value="b">Bornava</option>
    <option value="c">Alsancak</option>
    <option value="d">Urla</option>
</select>
<select class="altSelect altSelect4" style="display: none;">
    <option value="seciniz">Lütfen Seçiniz</option>
    <option value="a">Girne</option>
    <option value="b">Lefkoşa</option>
    <option value="c">Lefke</option>
</select>
<input type="text" id="altDeger"/>
Css kodları ;

Css kodları yoktur arkadaşlar select’leri kendinize göre düzenleyebilirsiniz.

jQuery kodları (en önemli kısım);
Kod:
function abjumpMenu(){

    /**
     * ! Ama select'inin secilen degerini aliyoruz.
     **/
    var deger = jQuery('.anaSelect').val();
    /**
     * ! Ama select'inin secilen degerinini gizli bir input'a atiyoruz ki
     *   form islemi post edildiginde veriyi kolayca gondermek icin.
     *   Ayrica her ana select degistigidne verileri temizliyoruz
     **/
    jQuery('#anaDeger').val(lisanssız);
    jQuery('#altDeger').val(lisanssız);
    jQuery('#anaDeger').val(deger);
    /**
     * ! Ana select'den aldigimiz degere bir text ekliyoruz
     *   Cunki class isimleri tek sayisal karakterlerden olusmaz.
     **/
    var acilacakDeger = 'altSelect'+deger;
    /**
     * ! Onceden acilmis alt select'imiz varsa tumunu kapatiyoruz.
     **/
    jQuery('.altSelect').fadeOut(0);
    /**
     * ! Ana select'den secilen degere gore alt select'imizi actiriyoruz.
     **/
    jQuery('.'+acilacakDeger).fadeIn('fast');
    /**
     * ! Alt element den secim yapildiginda.
     **/
    jQuery('.'+acilacakDeger).change(function(){
        /**
         * ! Secilen sekmenin degerini aliyoruz.
         **/
        var altDeger = jQuery('.'+acilacakDeger).val();
        /**
         * ! Eger alt menu degistiginde (change) hic bir alt menu secmemis ise
         * uyari verdiriyoruz
         **/
        if(altDeger == 'seciniz')
        {
            alert("Lütfen alt değeri seçiniz");
            jQuery('#altDeger').val(lisanssız);
        }else
        {
            jQuery('#altDeger').val(altDeger);
        }
    });
}
Kodlar gene kalabalık görükebilir ama %70 ‘i açıklama :) . Kodları adım adım açıklayacak olursak;
function abjumpMenu(){

Kod:
function abjumpMenu(){ ... }

Ana select’imiz değiştiğinde abjumpMenu fonksiyonu ile işlemlere başlıyoruz.

Kod:
var deger = jQuery('.anaSelect').val();

Ana select’inin seçilen degerini aliyoruz.

Kod:
jQuery('#anaDeger').val(lisanssız);
jQuery('#altDeger').val(lisanssız);
jQuery('#anaDeger').val(deger);

Ana select’inin seçilen değerlerini gizli bir input’a atiyoruz ki form islemi post edildiginde veriyi kolayca gondermek icin. Ayrica her ana select degistigidne verileri (input değerlerini )temizliyoruzi.

Kod:
var acilacakDeger = 'altSelect'+deger;

Ana select’den aldigimiz değere bir text ekliyoruz çunki class isimleri ‘tek’ ve ‘sayisal’ karakterlerden oluşamaz.

Kod:
jQuery('.altSelect').fadeOut(0);

Önceden açılmış alt select’imiz varsa tümünü kapatiyoruz.

Kod:
jQuery('.'+acilacakDeger).fadeIn('fast');
Ana select’den seçilen değere göre alt select’imizi açtırıyoruz.

Kod:
jQuery('.'+acilacakDeger).change(function(){ .. }

Alt element den seçim yapıldığında.

Kod:
var altDeger = jQuery('.'+acilacakDeger).val();

Seçilen sekmenin değerini alıyoruz.
Kod:
if(altDeger == 'seciniz')
        {
            alert("Lütfen alt değeri seçiniz");
            jQuery('#altDeger').val(lisanssız);
        }else
        {
            jQuery('#altDeger').val(altDeger);
        }
Eğer alt menü değiştiğinde (change) herhangi bir alt menü seçmemiş ise uyari verdiriyoruz

Js kodlarımız bu kadar arkadaşlar.

Kullanımı çok basittir

1 – İndirmiş olduğunuz js dosyasını ftp’nize atın.
2 – Sayfanızda herhangi bir js dosyası ekli değilse şu iki kodu tagları arası bu iki kodu yapıştırın.

Kod:
<script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="kutuphane/ab-jumpMenu.js" type="text/javascript"></script>
Eğer sayfanızda ekli olan bir js kodu varsa sadece ab-jumpMenu.js dosyasını sayfanıza ekleyin.
3 – Html taglarını direk sayfanıza ekleyin. (Görünüm açısından tasarım hoş değil ama bunu kendinize göre ayarlaya bilirsiniz.)

Uygulamayı indir / Uygulama demo
 

cyper

0
İyinet Üyesi
Katılım
21 Ağustos 2003
Mesajlar
16
Reaction score
0
Verdiğiniz bilgi için teşekkürler çok faydalı olacağına inanıyorum ve şunu sormak istiyorum müsadenizle. Bu formu 3 seçimli olarak nasıl yapabiliriz. il ve ilçe olarak yapmışsınız buna birde semt eklemek istiyorum nasıl bir yol izlemem gerekiyor?
 

Lansewebtr

0
İyinet Üyesi
Katılım
30 Aralık 2010
Mesajlar
256
Reaction score
3
emeğine saygısızlık olarak algılama amz çok uzun yolları dolanmış gibi. jQuery ile change e function verilse iş bitermiş.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst