2011-05-24 9 views
9

'da seçim seçeneğini devre dışı bırak Javascript kullanarak belirli bir kutudaki belirli seçenekleri devre dışı bırakması gereken bir form uygulamıyorum. Tüm tarayıcılarda iyi çalışır, ancak IOS'ta Safari'de değil (Masaüstü Safari bunu doğru yapar).IOS Safari

Web'e bakıyorum ama şu ana kadar hiç kimse bu problemi görmemiş görünüyor, bu yüzden bir Safari IOS sınırlaması veya baktığım bir şey olup olmadığından emin değilim. Herhangi bir yardım için

sayesinde Miguel

cevap

9

iOS için geliştirirken devre dışı bırakılmış seçenekleri kaldırmak için başka seçenek yok.

iPhone için resim çok açık: tüm seçim listeleri her koşulda tıklama tekerleği olarak biçimlendirilmiş ve bu tekerlekler devre dışı bırakılmış seçenekleri kabul etmiyor. Bu iPhone Simulator yanı sıra gerçek iPhone'da gösterilir.

iPad için, fotoğraf daha kafa karıştırıcı. IPad simülatörü, engellenmiş seçenekleri grileştirir ve mobil Safari ve masaüstü Safari'nin yaptığı gibi onları gerçekten devre dışı bırakır. Ama bir gerçek iPad (benim durumumda iOS 4.2.1 çalıştıran iPad 1) size tıklama tekerleğini gösterecektir.

Senaryonuz erken böyle bir şey yapmak:

// check for ios device 
nP = navigator.platform;  
if (nP == "iPad" || nP == "iPhone" || nP == "iPod" || nP == "iPhone Simulator" || nP == "iPad Simulator"){ 
    $('select option[disabled]').remove(); 
} 
+0

mükemmel çalışıyor, teşekkürler! – Viktor

+0

bu arada, "iPhone Simulator" nedir ve nerede bulabilirim? – Viktor

+1

@Viktor - iOS Simulator ile birlikte gelen bir yardımcı programdır. XCode – Brendan

-2

sen denediniz:

disabled="disabled" 

... opsiyon elemana?

+0

aksine

<optgroup disabled></optgroup> 

...ama dediğim gibi JavaScript kullanarak yapılması gerekiyor. Bir masaüstü tarayıcısında çalışacak – Michi

+4

, ancak bazı nedenlerle iOS engelliler özelliğiyle ilgili hiçbir şey yapmıyor. – Steve

+0

iOS 7'de bunu yapar, ancak ( – Viktor

-1

Hile.

optgroup:empty { ... }

+1

sabit olması gerekiyor Lütfen birden fazla soru üzerinde aynı cevabı göndermeyin.Norda bir yinelenen ise, bu etki için bir yorum bırakın. o zaman lütfen cevabınızı soruya uygun hale getirin. –

1

bir çözüm buldum ile bu senin için de yararlı olabileceğini

<optgroup label="Label text"></optgroup>

ve tarzı ile

<option value="somevalue">Label text</option>

değiştirin ve öyle değil jQuery ...

gerektirir 0

Sorunum, seçeneklerin dinamik olarak etkinleştirilip devre dışı bırakılmalarıydı; bu nedenle jQuery tarafından kaldırılma seçenekleri, bunların yeniden kullanılmasını engelledi.

Yani benim çözüm böyle innerHTML değiştirmek olan: Eğer engelli boş OPTGROUP için devre dışı seçeneği değiştirirseniz

function swapAvailOpts(A, B) { 
 
    content = document.getElementById(B); 
 
    switch (A) { 
 
    case "X": 
 
     content.innerHTML = '<optgroup label="X"><option>X1</option><option>X2</option></optgroup>'; 
 
     break; 
 
    case "Y": 
 
     content.innerHTML = '<optgroup label="Y"><option>Y1</option><option>Y2</option></optgroup>'; 
 
     break; 
 
    default: 
 
     content.innerHTML = '<optgroup label="Z"><option>Z1</option><option>Z2</option></optgroup>'; 
 
    } 
 
}
<select name="choose" onChange="swapAvailOpts(this.value,'Choices');"> 
 
    <option>X</option> 
 
    <option>Y</option> 
 
    <option>Z</option> 
 
</select> 
 
<select name="Choices" id="Choices"> 
 
    <optgroup label="X"> 
 
    <option>X1</option> 
 
    <option>X2</option> 
 
    </optgroup> 
 
</select>

0

, herhangi olmadan istenilen sonucu verecek gibi görünüyor ek javascript gerekli. Ben denemedim zamanki

<option disabled></option>