我已经实现了一个表单,它需要在使用Javascript的选择框中禁用某些选项。它适用于所有浏览器,但不适用于IOS上的Safari(桌面Safari做对)。禁用iOS Safari中的选择选项
我一直在寻找网络,但似乎目前为止没有人遇到过这个问题,所以我不确定它是否是Safari IOS限制或我忽略的东西。
感谢您的帮助, 米格尔
我已经实现了一个表单,它需要在使用Javascript的选择框中禁用某些选项。它适用于所有浏览器,但不适用于IOS上的Safari(桌面Safari做对)。禁用iOS Safari中的选择选项
我一直在寻找网络,但似乎目前为止没有人遇到过这个问题,所以我不确定它是否是Safari IOS限制或我忽略的东西。
感谢您的帮助, 米格尔
除了在为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();
}
作弊。更换
<option value="somevalue">Label text</option>
与
<optgroup label="Label text"></optgroup>
和风格,与
optgroup:empty { ... }
请不要在多个问题上发表相同的答案如果问题是重复的,请留下评论,如果不是这样,那么请定制你的问题答案。 – 2012-07-19 01:57:55
我有一个解决方案,可能对你也有帮助,并且它不需要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>
如果您改变了禁用选项禁用空白OPTGROUP,它似乎给没有任何期望的结果需要额外的JavaScript。
<optgroup disabled></optgroup>
由于不是一般的
<option disabled></option>
工作很好,谢谢! – Viktor 2014-04-01 15:21:02
顺便说一句,什么是“iPhone模拟器”,我在哪里可以找到它? – Viktor 2014-04-01 15:24:22
@Viktor - iOS模拟器是一个实用工具,随附Xcode。 – Brendan 2015-04-17 19:21:24