Etkinleştirmek için nasıl / anında unsurları oluşturmak

3 Cevap php

Bir kullanıcı ilk önce araç tipini, marka, ardından modeli ve nihayet belirli modelini seçin hangi listboxes bir dizi hizmet için PHP, jQuery ve Spry bir arada kullanıyorum.

Bütün listboxes (SEÇ) iyi çalışıyor, ve onlar Spry öğelerini kullanarak düzgün güncelleme. Her liste farklı bir Spry XML Dataset doldurulur, ve bu benim sorunum olur.

Ben kullanıcıya dört ListBoxes Varsa, komut birkaç saniye alıyor, dört ListBoxes doldurmak için XML dört bir sürü gitmek ve almak zorundadır. Ne yapmak istediğinizi oluşturmak için / bu yüzden ikinci gelen seçtiğinizde etkin / üçüncü oluşturulur, etkin / saniye oluşturulur, ilk liste seçer kullanıcı öylesine, sırayla süzer etkinleştirmek ... ve bir üzerinde.

Bu işlemden önce komut dosyası zaten XML getirilen çünkü özürlü özniteliği ayarlayarak hiçbir iyidir.

Herhangi bir fikir?

Si

GÜNCELLEME - Üzgünüm beyler, benim sorun oldukça açıkça sanmıyorum.

Benim yazısının üst kısmında ben (gerektiğinde) söner ve bir servis karşı karmaşık bir SOAP sorgusu gerçekleştirir, her biri dört Spry XML veri seti değişkenleri, bildirmek, bu hizmeti daha sonra XML bir yığın döndürür. Her sorgu son bağlıdır, böylece kullanıcı aracın türünü seçtikten sonra, ikinci veri seti üreticilerinin doğru bir listesini vermek için yenilenir. Onlar üreticisi seçtiğinizde, üçüncü liste bu üreticiler modellerin doğru bir listesini vermek için yenilenir. Bu modeli seçtiğinizde, model türevlerinin listesi bu model (dördüncü liste) için yenilenir.

Daha benim komut aşağı dört SEÇ adlı, çevik sorguları verilerle doldurulan her biri vardır. Şimdi, kullanıcı son kutusuna doğru modeli almak için sırayla her listeden istediğiniz seçeneği seçmeniz gerekir. Ne yapmak istiyorum SADECE sayfa oluşturulur, o zaman doldurmak ilk kutusunu doldurmak (veya oluşturabilir?), Ikinci, üçüncü ve dördüncü kutuları kullanıcı her istenilen değeri seçtiğinde, çok (Autotrader sitesinde olur gibi www.autotrader.co.uk).

Ben ilk nakil söylediğim gibi SONRA dört veri setleri alınamadı ve SEÇ adlı içine doldurulan kadar bu ateş yok gibi, ben, () işlevleri attr 'engelli', hatta jQuery show () ve hide kullanamazsınız . Ben ideal olarak sıfırdan elemanları oluşturur ve gerektiğinde, XML başında getirilen olmanın dört sürü durdurmak için bir şey gerekir ...

Bu temizlemekte Umut

3 Cevap

$('option').click( function() {
    if($(this).val() != 'Select one...'){
        $(this).next('select').attr('enabled', 'enabled');
        $(this).next('select ~ select').attr('disabled', 'disabled');

        /* or */
        $(this).after('<!-- Generated select/option HTML -->').nextAll('select').remove();
    }
}

Bu tamamen denenmemiş, ancak API göre, çalışabilir. Ben tamamen sorunuzu anlamak emin değilim, ama seçimden sonra bir sonraki seçeneğini etkinleştirin ve bir sonraki seçeneği tıklandığında kadar sonra seçeneklerini devre dışı bırakmak için arıyorsanız, bu şekilde çalışır eğer bilet olurdu.

Dinamik ekleyerek (veya kaldırma) meselesi, sadece .after kullanabilir ve .nextAll yöntemler kaldırılması için seçme kutuları eklemek ve belirlemekte.

GÜNCELLEME: Whoopsie. Yanlış seçiciler vardı.

Bunun yerine, onları devre dışı bırakma, neden sadece jQuery / göstermek gizlemek değil? .hide() .show(),

Ben soran biliyorum emin değilim ama böyle bir şey arıyorsanız gibi görünüyor:

$("#select1").bind("change",function() {
    var sel=$(this).attr("value");
    $.ajax({
        url:sel + ".xml",
        dataType:"xml",
        success:function(xml) {
            $(xml).children("option").each(function() {
                $("<option />",attr:{ value:$(this).attr("value") }).text($(this).text()).appendTo("#select2");
            });
        }
    });
});

Ben kapalı bir şekilde burada temel muyum? Yani, bu konuda giderek sadece ilkel bir yol (ve muhtemelen bir milyar delikleri vardır), ama bu güncelleme canlı istiyorsun, değil mi? Haklısınız, bu sayfa yük tüm XML getiriliyor istemiyorum? Ayrıca $("#select1") $("#formname select").each(function() { olarak değiştirin ve daha sonra .next("select") XML getiriliyor sonra bunu eklemek için almak olabilir.

Ben gerçekten dinç hiç kullanmadım, itiraf edeceğim. Ben kullanımda biraz onu gördüm ve ben jQuery kullanarak gerekeni yapabileceği gibi görünüyordu.