2010-10-06 21 views
9

iPhone'da kullanılmak üzere özelleştirilmiş bir web uygulaması geliştiriyoruz. Uygulamadaki bir sayfa, 1 açılır listeden bir seçeneğin seçilmesinin, 2. açılır listenin seçeneklerinden türetildiği ve daha sonra gerçekleşen 3 sonraki SELECT açılır menüsüne sahiptir. Sonraki açılan seçenekler, önceki açılır menüdeki onchange olayı temelinde javascript tarafından doldurulur. Sorun şu ki, iPhone'da SELECT seçenekleri önceki ve sonraki kontrole geçmek için 'prev' ve 'next' linkleri ile görünür. 'Sonraki' bağlantı tıklandığında, kontrol sonraki SELECT'e geçer ve seçenekleri görüntüler. Javascript, önceki SELECT için onchange olayıyla tetiklenir ve sonraki SELECT seçeneklerini belirler. Ancak, 2. SELECT (YÜKSEK SEÇİM) için açılır menüde, javascript tarafından yeniden oluşturulmadan önceki seçenekler görüntülenir. Javascript'in çalışmasını ve sonraki denetimin seçimini sıralayabilecek bir geçici çözüm veya olay var mı? SELECT seçeneği seçildiğinde ve kontrol SELECT elemanından ayrılmadan önce tetiklenebilecek herhangi bir olay var mı? SELECT (SEÇ) açılır seçenek ekranı için Sonraki ve Önceki bağlantılar için bir tutamaç var mı?HTML SEÇME Seçeneklerini etkinlik delegasyonuyla aktarma iPhone Safari'de javascript'e aktarılıyor

+0

Aynı sorunu yaşıyorum. –

+0

Burada da aynı sorun var. Hala bir çözümle şans yok. –

+1

Sahip olduğunuz sorunu yeniden oluşturamadım. Bu [basit demo] (http://jsbin.com/ogona4/7) iOS 3.1 – brianpeiris

cevap

2

Belki odak olayını kullanabilirsiniz, jQuery bu olacaktır:

$('#select2').focus(function() { 
    // update select2's elements 
}); 

iPhone aşırı yük geldiğinde, ve olay kovulunca Gerçek soru olmasına rağmen. Ayrıca bu görünümde seçim seçenekleri değiştirilebilir.

+0

OP ile aynı sorunu yaşıyorum. Focus(), blur() ve change() işlevlerini denedim, ancak iPhone, siz tekrar Next/Prev (Yeniden/İleri) düğmesine basana kadar liste içeriğini önbelleğe alıyor gibi görünüyor. –

+1

Yup, aynı, odaklanmadı(), blur() ve change(), bunların hiçbiri çalışmıyor. Ayrıca, neden çalışmayan ve hatta test edilmeyen bir şey kazanın. –

0

Sitemde de aynı sorun vardı. Seçme denetiminde selectedIndex özelliğini el ile yoklayarak düzeltmeyi başardım. Bu şekilde listedeki öğeyi "kontrol ettiğiniz" anda patlar.

$.fn.quickChange = function(handler) { 
    return this.each(function() { 
     var self = this; 
     self.qcindex = self.selectedIndex; 
     var interval; 
     function handleChange() { 
      if (self.selectedIndex != self.qcindex) { 
       self.qcindex = self.selectedIndex; 
       handler.apply(self); 
      } 
     } 
     $(self).focus(function() { 
      interval = setInterval(handleChange, 100); 
     }).blur(function() { window.clearInterval(interval); }) 
     .change(handleChange); //also wire the change event in case the interval technique isn't supported (chrome on android) 
    }); 
}; 

"Change" olayı olarak kullanabileceğiniz gibi Kullanmak: İşte bunu yapmak için yazdığım bir jQuery eklentisi var. Örneğin:

$("#mySelect1").quickChange(function() { 
    var currVal = $(this).val(); 
    //populate mySelect2 
}); 

Düzenleme: yeni değer seçmek için dokunduğunuzda Android seçme ele vermez, ama aynı zamanda iphone does aynı problem yoktur. Bu yüzden eski change olayını kablolayarak da düzeltin.

İlgili konular