所以这是我的解决方案(类似于 John Vance 的回答):
首先到这里获取一个检测移动浏览器的功能。
http://detectmobilebrowsers.com/
他们有很多不同的方法来检测您是否在使用移动设备,因此请找到一种适合您使用的方法。
您的 HTML 页面(伪代码):
If Mobile Then
<input id="selling-date" type="date" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
else
<input id="selling-date" type="text" class="date-picker" readonly="readonly" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
jQuery:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max
});
});
这样您仍然可以在移动设备中使用本机日期选择器,同时仍然可以设置最小和最大日期。
非移动设备的字段应该是只读的,因为如果像 chrome for ios 这样的移动浏览器“请求桌面版本”,那么他们可以绕过移动检查,而您仍然希望阻止键盘显示。
但是,如果该字段是只读的,则用户可能会认为他们无法更改该字段。您可以通过更改 CSS 使其看起来不是只读来解决此问题(即将边框颜色更改为黑色),但除非您更改所有输入标签的 CSS,否则您会发现很难保持外观一致浏览器。
为了了解这一点,我只需在日期选择器中添加一个日历图像按钮。只需稍微更改一下您的 JQuery 代码:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max,
showOn: "both",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText: "Select date"
});
});
注意:您必须找到合适的图像。