在IOS Safari中禁用select选项

我已经实现了一个表单,它需要在使用Javascript的select框中禁用某些选项。 它在所有的浏览器中都能正常工作,但是在IOS上的Safari上却不能正常工作(Desktop Safari正确)。

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

谢谢你的帮助,Miguel

没有其他的select,只能删除iOS开发时禁用的选项。

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

对于iPad来说,图片更令人困惑。 iPad模拟器确实禁用了禁用的选项,并且确实使其被禁用,就像移动Safari和桌面Safari一样。 但实际的 iPad(在我的情况下运行iOS 4.2.1的iPad 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(); } 

我有一个解决scheme,可能对你也有帮助,它不需要jQuery …

我的问题是,这些选项是dynamic启用和禁用的,所以通过jQuery去除选项的想法避免了它们被重用。

所以我的解决scheme是像这样修改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> 

如果您将禁用选项更改为禁用空白select组,则似乎可以提供所需的结果,而不需要额外的JavaScript。

 <optgroup disabled></optgroup> 

与平时相反

 <option disabled></option> 

作弊。 更换

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

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

和风格与

optgroup:empty { ... }

你有没有尝试过:

 disabled="disabled" 

…在选项元素上?