Android Chrome 和 Webbrowser 仍然存在这个问题,所以我使用 angularjs 做了一个特定于智能手机的解决方法:
http://jsfiddle.net/Rvjuf/12/
这个怎么运作:
有 2 个元素可以处理这个问题:
<span>{{ timeDisplay }}</span>
<input type="time" ng-model="time">
在链接代码中,为元素设置样式(也可以在 CSS 文件中进行),并绑定到跨度的点击:
scope.inputElement.css({
position: "absolute",
"z-index": "-10000",
opacity: 0
});
scope.displayElement.css({
width: "200px",
height: "20px",
background: "blue",
color: "white",
});
scope.displayElement.bind("click", function(event) {
scope.inputElement[0].focus();
scope.inputElement[0].click();
});
然后,为时间值注册一个更改侦听器并更新 timeDisplay 变量:
$scope.$watch('time', function(nv, ov) {
var parts = nv.split(" ")[0].split(":");
var hours = parts[0];
var minutes = parts[1];
$scope.timeDisplay = $filter('date')(new Date(2014, 03, 06, hours, minutes, 0), "H:mm");
});
因此,当用户点击跨度时,输入要么被聚焦,要么被点击(iOS 和 ANDROID 在那里有所不同),导致本地时间选择器 UI 出现。