jQuery UI Datepicker无法在iOS

时间:2015-09-08 09:41:35

标签: jquery jquery-ui datepicker

我有一个带有几个日期字段的搜索表单,我很高兴使用jQuery UI的datepicker:

<input class="formFields datepicker" id="arrival" name="arrival" required="" placeholder="Arrival" readonly="true" type="text">
<input class="formFields datepicker" id="departure" name="departure" required="" placeholder="Departure" readonly="true" type="text">

$( ".datepicker" ).datepicker();

这会在桌面浏览器上产生一个相当精彩,令人愉悦的眼睛日期选择器弹出窗口:

enter image description here

但出于某种原因,在iPhone和iPad上,点击这些字段什么也没做。 Chrome和Safari都是这种情况。

我已使用以下内容检查是否正在识别click事件(<)。

$(".datepicker").click(function(){
    alert("clicked me");
});

我还尝试修改输入字段以键入日期而不是文本:

<input class="formFields datepicker" id="arrival" name="arrival" required="" placeholder="Arrival" type="date">

但是这并没有真正起到解决方案的作用(实际上是推动我首先使用jQuery datepicker)的原因有几个。

  • 无法识别占位符文字,因此该字段显示空白或其中显示“mm / dd / yyyy”,而不是“到达”
  • 然后必须在桌面上使用默认的datepicker,这真的不是那么有吸引力,至少与我目前的情况相比

1 个答案:

答案 0 :(得分:0)

可能有点晚了。

我通过注释掉一个绑定('mousemove'...)解决了这个问题,似乎该事件导致iOS Chrome和Safari(在我的情况下)无响应。

我注释掉了代码,代码再次正常运行。但是我需要在PC上使用mousemove,所以我将鼠标移动到if mobile语句中。

if (window.innerWidth < 480) {
    $(document).bind('mousemove', function (e) {
       // something that work on PC.
    })
}

使用innerWidth 480来检测移动设备可能是愚蠢的。但它会让你知道如何解决这个问题。

如果它使用了很多,你也可以包装bind方法。有一个图书馆 http://touchpunch.furf.com/似乎没有完全正常运作,但却得到了这个想法。