2011-05-24 90 views
9

我已经实现了一个表单,它需要在使用Javascript的选择框中禁用某些选项。它适用于所有浏览器,但不适用于IOS上的Safari(桌面Safari做对)。禁用iOS Safari中的选择选项

我一直在寻找网络,但似乎目前为止没有人遇到过这个问题,所以我不确定它是否是Safari IOS限制或我忽略的东西。

感谢您的帮助, 米格尔

回答

9

除了在为iOS开发时删除禁用的选项,别无选择。

对于iPhone而言,图片非常清晰:在所有情况下,所有选择列表的样式均为单击轮子,而且这些轮子不接受禁用的选项。这在iPhone模拟器以及实际的iPhone上显示。

对于iPad来说,图片更加混乱。 iPad模拟器会对禁用的选项进行灰化处理,真正使它们变为禁用状态,就像移动Safari和桌面Safari一样。但一个实际 iPad(iPad 1,在我的情况下运行iOS 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 2014-04-01 15:21:02

+0

顺便说一句,什么是“iPhone模拟器”,我在哪里可以找到它? – Viktor 2014-04-01 15:24:22

+1

@Viktor - iOS模拟器是一个实用工具,随附Xcode。 – Brendan 2015-04-17 19:21:24

-2

你试过:

disabled="disabled" 

...选项元素?

+0

我还没有尝试过...但正如我所说,我需要它使用JavaScript来完成。 – Michi 2011-06-02 07:23:18

+4

可以在桌面浏览器中工作,但由于某些原因,iOS对禁用属性不做任何处理。 – Steve 2011-09-01 17:31:07

+0

它在iOS 7中有它,但除此之外;( – Viktor 2014-04-01 15:04:15

-1

作弊。更换

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

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

和风格,与

optgroup:empty { ... }

+1

请不要在多个问题上发表相同的答案如果问题是重复的,请留下评论,如果不是这样,那么请定制你的问题答案。 – 2012-07-19 01:57:55

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,它似乎给没有任何期望的结果需要额外的JavaScript。

<optgroup disabled></optgroup> 

由于不是一般的

<option disabled></option>