jQuery UI 日期选择器无法在 iOS 上运行

标签 jquery jquery-ui datepicker

我有一个带有几个日期字段的搜索表单,我很高兴在其中使用 jQuery UI 的日期选择器:

<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 都是这种情况。

我使用以下方法来检查点击事件是否被识别(确实如此):

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

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

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

但这并不能真正作为一个解决方案(实际上是促使我首先使用 jQuery 日期选择器的原因),有几个原因。

  • 无法识别占位符文本,因此该字段显示为空白或显示“mm/dd/yyyy”,而不是“到达”
  • 默认的日期选择器必须在桌面上使用,这确实没有那么有吸引力,至少与我目前拥有的相比

最佳答案

可能有点晚了。

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

我注释掉了代码,代码又恢复正常了。但我需要在 PC 上使用 mousemove,因此我将 mousemove 包装在 if mobile 语句中。

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

也许使用innerWidth 480来检测移动设备是愚蠢的。但它会让您了解如何解决这个问题。

如果绑定(bind)方法经常使用,您也可以包装它。有一个图书馆 http://touchpunch.furf.com/这似乎没有完全发挥作用,但它传达了这个想法。

关于jQuery UI 日期选择器无法在 iOS 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32454352/

相关文章:

javascript - 如何使用ajax和php登录用户?

asp.net - 使用 jQuery UI 和 .Net 母版页

javascript - Angular-UI Bootstrap Datepicker 新日期

python - Dash datepicker max_date_allowed 作为当前日期不能正常工作

javascript - 无法将昨天的日期设置为kendo ui datepicker

javascript - 如何使用 JQuery/Javascript 动态打印到另一个表?

asp.net - ASP.NET 模式屏幕的最佳选择

javascript - JQUERY 检索和删除 previous sibling 姐妹

javascript - 使 slider 气泡跟上左 handle

jquery - 记住页面刷新之间的 jQuery 可拖动工具选项板位置