这是一个糟糕的问题,因为我不能提供任何可重复的例子。但是,我没有找到任何关于我在任何地方看到的行为的参考,所以我认为这是我最好的选择。
我已将三个<select>
元素设置为日期选择机制。他们背后有一些事件处理程序可以更新月份或年份更改的日期列表,但这就是它。元素本身非常简单:
<select class="day required">
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
</select>
(直接从Chrome开发者工具中复制)。这就是Day
选择,它是在iOS(只有iOS)上给我奇怪的行为(有时)。
当我直接点击<select>
(Day
,那就是)时,没有问题;它工作得很好。但是,当我先点击左侧的Month
选项,然后点击弹出式Safari 中的Day
按钮选择一个选项<{1}} / em>界面,然后事情变得怪异。会发生的是,选项文本像往常一样出现。如果我向上或向下“滚动”列表,以使当前所选的选项不可见(从第Next
天到第5
},然后点击其他选项,那么在新选择的15
条目获得复选标记的情况下工作,但是如果我将列表回滚到原始列表,它仍然会被检查!可以重复几次这个过程,直到整个地方都有复选标记。
当我点击蓝色<option>
按钮时,实际只选择了一个条目;你会注意到元素上没有“多个”属性。相同的HTML当然可以在桌面浏览器和Android中使用;奇怪的是,我们在iOS上的Chrome中看到了同样的问题。
我已尝试通过实验禁用事件处理程序,但这没有任何效果。我试过制作jsfiddle / jsbin示例也没有成功。这段代码出现的页面并不简单,但并不复杂;关于它的最有趣的事情是标记都是由JavaScript模板系统动态生成的,但是所有这些都可以在所有类型的东西中正常工作而没有任何类似的怪异。
由于我没有看到控制台错误,它似乎与我是否处理“更改”事件无关,和,因为当我到达时,它只发生 {@ 1}}在某种程度上,我倾向于认为这只是WebKit为Done
元素(在iOS上)使用的低级窗口小部件的角落错误,而不是问题用我的代码本身。当然,如果有一个解决方法,我会很高兴尝试它,但到目前为止我所做的随机改动都没有产生任何影响。
还有人见过吗?
另外两个细节:当它的行为奇怪时,点击选项总是正确地更新页面上的元素。有时没有“咔嗒”声,但有时会有。当我在选项之间单击而不向上或向下滚动列表时,在选项子集中我可以看到窗口小部件再次开始正常工作,但是仍然可以检查不可见的选项。