Javascript 移动狩猎<;选择>;元素神秘地显示多个选择

Javascript 移动狩猎<;选择>;元素神秘地显示多个选择,javascript,html,ios,html-select,Javascript,Html,Ios,Html Select,这是一个糟糕的问题,因为我不能提供任何类型的可复制的例子。然而,我还没有找到任何关于我在任何地方看到的行为的参考资料,所以我认为这是我最好的选择 我已经设置了三个元素作为日期选择机制。它们后面有一些事件处理程序,可以在月份或年份发生变化时更新日期列表,仅此而已。这些元素本身非常简单: <select class="day required"> <option value="1">01</option> <option value="2">0

这是一个糟糕的问题,因为我不能提供任何类型的可复制的例子。然而,我还没有找到任何关于我在任何地方看到的行为的参考资料,所以我认为这是我最好的选择

我已经设置了三个
元素作为日期选择机制。它们后面有一些事件处理程序,可以在月份或年份发生变化时更新日期列表,仅此而已。这些元素本身非常简单:

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(直接从Chrome开发者工具中复制)。这就是
Day
的选择,它让我在iOS上(甚至只有iOS)出现了奇怪的行为(有时)

当我直接点击该
(即
)时,没有问题;它很好用。然而,当我首先点击左侧的
Month
选项,然后通过单击弹出的Safari pick an option界面中的
Next
按钮进入
Day
时,事情会变得很奇怪。发生的情况是,选项文本都会像往常一样显示出来。如果我向上或向下“滚动”列表,使当前选择的选项不可见(例如,从第5天到第15天),然后单击另一个选择,那么只要新选择的
条目得到选中标记,它就可以工作,但如果我将列表回滚到原始列表,它仍然被选中!可以将该过程重复几次,直到到处都有复选标记

当我点击蓝色的
Done
按钮时,实际上只选择了一个条目;您将注意到元素上没有“multiple”属性。当然,在桌面浏览器和安卓系统中,同样的HTML也可以正常工作;奇怪的是,我们在iOS上的Chrome上也看到了同样的问题

我尝试过通过实验禁用事件处理程序,但没有效果。我也尝试过制作jsfiddle/jsbin示例,但都没有成功。这段代码出现的页面并不简单,但也并不复杂;最有趣的是,所有标记都是由JavaScript模板系统动态生成的,但是所有标记都可以在各种各样的东西上正常工作,没有任何类似的奇怪之处

因为我看不到控制台错误,而且它似乎与我是否处理“更改”事件无关,而且因为它只在我以某种方式访问
时发生,所以我倾向于认为这只是WebKit使用的
元素(在iOS上)的低级小部件的一个小错误,我的代码本身没有问题。当然,如果有解决办法的话,我很乐意尝试一下,但迄今为止我所做的任何随机更改都没有产生任何效果

还有人看到这个吗


另外两个细节:当它的行为异常时,点击选项总是正确地更新页面上的元素。有时没有“咔嗒”声,但有时有。当我在选项之间单击而不向上或向下滚动列表时,在选项子集中我可以看到小部件再次正常工作,但不可见的选项可能仍处于选中状态。

如果我能得到jsBin副本,我当然会发布。@canon,因为无法限制可以选择的日期。规范中说“min”和“max”属性应该控制这些属性,但是Safari没有注意这些属性。这听起来更像是iOS或WebKit的bug,而不是代码的问题。试着向苹果提交一份bug报告,看看他们会怎么说。可能是因为你的select元素上没有名字或id,而其中一个底层脚本通常会处理select元素的事件吗?@ReinierKaper,我不这么认为;这似乎与事件无关。事实上,我最近还没试过拿这个开玩笑;自从我6个月前写这篇文章以来,有可能是iOS更新修复了它。