2011-05-24 24 views
9

में चयन विकल्प अक्षम करें मैंने एक फॉर्म लागू किया है जिसे जावास्क्रिप्ट का उपयोग कर एक चुनिंदा बॉक्स में कुछ विकल्प अक्षम करने की आवश्यकता है। यह सभी ब्राउज़रों में ठीक काम करता है लेकिन आईओएस पर सफारी में नहीं (डेस्कटॉप सफारी इसे सही करता है)।आईओएस सफारी

मैं वेब के चारों ओर देख रहा हूं लेकिन ऐसा लगता है कि अब तक कोई समस्या नहीं है, इसलिए मुझे यकीन नहीं है कि यह एक सफारी आईओएस सीमा है या जो कुछ मैं देख रहा हूं। ...

disabled="disabled" 

विकल्प तत्व पर:

किसी भी मदद के लिए धन्यवाद, मिगुएल

उत्तर

9

आईओएस के लिए विकसित होने पर अक्षम विकल्पों को हटाने के अलावा कोई विकल्प नहीं है।

आईफोन के लिए तस्वीर बहुत स्पष्ट है: सभी चुनिंदा सूची सभी परिस्थितियों में क्लिक व्हील के रूप में स्टाइल की जाती है, और ये पहिये विकलांग विकल्पों को स्वीकार नहीं करते हैं। यह आईफोन सिम्युलेटर के साथ-साथ वास्तविक आईफोन पर भी दिखाया गया है।

आईपैड के लिए, तस्वीर अधिक भ्रमित है। आईपैड सिम्युलेटर विकलांग विकल्पों को ग्रे करता है और वास्तव में उन्हें अक्षम करता है, जैसे कि मोबाइल सफारी और डेस्कटॉप सफारी करते हैं। लेकिन वास्तविक आईपैड (आईपैड 1, आईओएस 4.2.1 चला रहा है, मेरे मामले में) आपको क्लिक व्हील दिखाएगा।

तो अपनी स्क्रिप्ट में जल्दी पर कुछ इस तरह करते हैं:

// 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

बहुत अच्छा काम कर रहा है, धन्यवाद! – Viktor

+0

वैसे, "आईफोन सिम्युलेटर" क्या है और मुझे यह कहां मिल सकता है? – Viktor

+1

@ विकटर - आईओएस सिम्युलेटर एक उपयोगिता है जो जहाजों के साथ है एक्सकोड। – Brendan

-2

आप की कोशिश की है?

+0

मैं प्रयास नहीं किया है करने का विरोध किया ...लेकिन जैसा कि मैंने कहा था कि मुझे जावास्क्रिप्ट का उपयोग करके इसे करने की ज़रूरत है। – Michi

+4

जो डेस्कटॉप ब्राउज़र में काम करेगा, लेकिन किसी कारण से आईओएस अक्षम विशेषता के साथ कुछ भी नहीं करता है। – Steve

+0

आईओएस 7 में यह करता है, लेकिन इसके अलावा नहीं; ( – Viktor

-1

Cheat।

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

और शैली के साथ

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

बदलें साथ

optgroup:empty { ... }

+1

में तय किया जाना प्रतीत होता है कृपया एक ही उत्तर को कई प्रश्नों पर पोस्ट न करें। यदि प्रश्न डुप्लिकेट है, तो उस प्रभाव पर एक टिप्पणी छोड़ दें। यदि ऐसा नहीं है, तो कृपया प्रश्न के अपने उत्तर को तैयार करें। –

1

मैं एक समाधान है और वह भी आप के लिए उपयोगी हो सकता है, और यदि ऐसा नहीं होता jQuery की आवश्यकता है ...

मेरी समस्या यह थी कि विकल्प गतिशील रूप से सक्षम और अक्षम थे, इसलिए jQuery द्वारा विकल्पों को हटाने का विचार उन्हें फिर से उपयोग करने से बचाता था।

तो मेरी समाधान इस तरह innerHTML संशोधित करने के लिए किया गया था:

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

आप विकलांग खाली optgroup करने के लिए अपने विकलांग विकल्प बदलते हैं, तो यह किसी भी बिना वांछित परिणाम देने के लिए लगता है अतिरिक्त जावास्क्रिप्ट की आवश्यकता है।

<optgroup disabled></optgroup> 

के रूप में हमेशा की तरह

<option disabled></option> 
संबंधित मुद्दे