• 29-11-2017, 11:06:50
    #1
    Arkadaşlar, footer.php nin sonunda js linkler aşağıdaki gibidir.
        
        <script src="js/jquery-3.2.1.min.js"></script>  
        <script src="js/bootstrap.min.js"></script>
        <script src="js/modelsec.js"></script>
        <script src="js/mahallesec.js"></script>
        <script src="js/main.js"></script>
        <script type="text/javascript">
            $(function(){
                $(".box .h_title").not(this).next("ul").hide("normal");
                $(".box .h_title").not(this).next("#home").show("normal");
                $(".box").children(".h_title").click( function() { $(this).next("ul").slideToggle(); });
            });
        </script>
        
    </body>
    </html>
    Burada mahallesec.js, modelsec.js'den sonra olduğunda modelsec.js çalışmıyor. Hangisi sonra ise diğerini çalıştırmıyor.
    modelsec.js ve mahallesec.js kodları aşağıdaki gibidir.
    modelsec.js
    $(document).ready(function(e){
        $("#markalar").bind('change',modelgetir);
    });
    function modelgetir(){
        $.post('modeller.php',{marka_id:$("#markalar").val()},function(output){
            $("#modeller option").remove();        
            $("#modeller").append(output);    
        });    
    }
    mahallesec.js
    $(document).ready(function(e){
        $("#iller").bind('change',ilcegetir);
    });
    function ilcegetir(){
        $.post('ilceler.php',{il_id:$("#iller").val()},function(output){
            $("#ilceler option").remove();        
            $("#ilceler").append(output);
            
            $.post('mahalleler.php',{ilce_id:$("#ilceler").val()},function(output){
            $("#mahalleler option").remove();
            $("#mahalleler").append(output);
        });
            
        });    
    }
    $(document).ready(function(e){
        $("#ilceler").bind('change',mahallegetir);
    });
    function mahallegetir(){
        $.post('mahalleler.php',{ilce_id:$("#ilceler").val()},function(output){
            $("#mahalleler option").remove();
            $("#mahalleler").append(output);
        });
        
    }
    Bu iki script kod farklı yerlerde farklı işlemlerde kullanılıyor. Fakat birbirini engelliyor. modelsec.js dosyasını mahallesec.js'den üretmiştim! Kod yapısı benzer fakat bir yerde çakışma oluyor. Kodlar tek tek sorunsuz çalışıyor.
    Sorun nereden kaynaklanıyor olabilir? Ne yapabilirm? Yardımlarınız için peşin teşekkürlerimi sunarım.
  • 29-11-2017, 18:04:05
    #2
    Jquery çok bilmiyorum ama 3 tane ayrı document ready fonksiyonu olduğundan olabilir. Sadece 1 tane olsa yeterli bence. Bu 3 fonksiyonuda silip yerine bir tane yazarsanız düzelir diye düşünüyorum.
    $(document).ready(function(e){
        $("#ilceler").bind('change',mahallegetir);
        $("#iller").bind('change',ilcegetir);
        $("#markalar").bind('change',modelgetir);
       
    });
  • 29-11-2017, 18:08:41
    #3
    2 sorun var
    1- Multi document ready
    /*
    $(document).ready(function(e){
    
    });*/
    //yerine
    $(function(){
    
    });
    $(function(){
    
    });

    2- İl change olunca ilçede change oluyor, mahallede change oluyor. Selectlerin optionlarını komple boşaltmak yerine default <option>İlçe seçiniz</option>mahalle seçiniz ekleyip bunları asla silmemelisin
  • 29-11-2017, 23:40:48
    #4
    Arkadaşlar; ilginiz için teşekkürler. Sorunuma cevap alamadım. Sanırım doğru ifade edemedim. İki farklı iş için iki farklı script kod var. Bunlardan hangisi sonra yazılıysa önceki iptal oluyor.
    Sitemde bir sayfada ürün kaydı yapılırken marka select edildiğinde model listesi markaya göre geliyor. Aynı sitenin başka bir sayfasında üye adres bilgileri girilirken il seçildiğinde ilçeler, ilçe seçildiğinde mahaller geliyor.Yukarıdaki kodlar tek tek çalışıyor. Fakat footer ın sonunda script linklerinde mahallesec.js veya modelsec.js scriptlerinden hangisinin linki diğerinden sonra yazıldıysa o çalışıyor diğeri çalışmıyor. Sadece sıralamda yer değişikliği yapılınca çalışmayan çalışıyor, çalışan çalışmıyor. Sadece yer değişikliği ...
    Umarım biraz daha netleştirmişimdir. Saygılar.