如何在 iOS 上的 <input type=date> 上注册值更改事件

Posted

技术标签:

【中文标题】如何在 iOS 上的 <input type=date> 上注册值更改事件【英文标题】:How to register for value change events on <input type=date> on iOS 【发布时间】:2012-03-16 15:51:27 【问题描述】:

我正在尝试创建一个 html5 输入日期组件,以便我可以利用本机 ios 日期/时间选择器,并且我正在使用 jquery。我有以下代码来生成组件:

  var $inputDate = $("<input></input>");
  $inputDate.attr("type", "date");
  $inputDate.attr("value", "2004-05-03");
  $inputDate.change(function(event)
  
    console.log("value changed");
  );

代码在本机应用程序的 webkit 组件中运行。输入控件看起来很好,我可以使用选择器更改值。但是,当我更改值并关闭选择器时,不会触发更改功能。当我在 Chrome 的网页中运行它时,一切正常。如何在 iOS 上进行这项工作?

【问题讨论】:

发现其他用户抱怨没有触发更改事件,建议他们改用以下工具包:cubiq.org/spinning-wheel-on-webkit-for-iphone-ipod-touch 感谢您的建议,但使用该工具包并不能提供我们产品所需的语言环境支持。 【参考方案1】:

关闭日期/时间选择器时会调用 onblur 函数。所以这确实有效:

var $inputDate = $("<input></input>");
$inputDate.attr("type", "date");
$inputDate.attr("value", "2004-05-03");
$inputDate.blur(function(event)

  console.log("value changed");
);

在较新版本的 Chrome(和 android 上的 Chrome)中:

选择日期时调用 onchange 事件 关闭下拉菜单时不会调用 onblur 事件,仅当控件失去键盘焦点时才会调用

这是一个示例,显示使用纯 javascript 生成的事件:http://jsbin.com/iximuy/4

【讨论】:

伙计,我把头发扯断了,谢谢你救了我!

以上是关于如何在 iOS 上的 <input type=date> 上注册值更改事件的主要内容,如果未能解决你的问题,请参考以下文章

单击 html input[type="file"] 时移动设备(Android 或 IOS)上的目标图像文件夹

如何通过 ReactJS 中的另一个按钮单击触发 <input type='file' /> 上的 onChange?

input在苹果手机上的样式

如何在 chrome 中更改 <input type=date> 的外观

在 WKWebView 中调用 <input type="text"> 上的 .focus() 会导致键盘延迟

随笔移动端input type|语义与IOS按键