确定日期字段是否通过JavaScript显示日历弹出窗口

时间:2013-04-25 14:18:11

标签: javascript asp.net-mvc-3 html5 calendar

对于我正在处理的MVC应用,我们在页面上有一些日期字段。

我最初的反应是使用jQuery UI的datepicker,但我们遇到了一个小麻烦 - 我们也期望这个应用程序可以在iPad上运行。因此,我被要求调查使用HTML5 <input type="date" />标记,但如果浏览器不支持它,则回退到datepicker。

另一个小问题:IE 邪恶。

显然,IE 确实'支持'<input type="date" />;它只是在点击时不显示日历。

缩写的,已清理的标记:

@* In the HTML body... *@
@Html.InputFor(m => m.SomeDate, new { id="A", type="date" })
@Html.InputFor(m => m.SomeOtherDate, new { id="B", type="date" })

<script>
var $A = $('#A'),
    $B = $('#B');

$(document).ready(function () {
  fallbackToDatepicker($A);
  fallbackToDatepicker($B);

  @* ...SNIP: Other operations here... *@
});

function fallbackToDatepicker($field) {
  if($field.type() != "date") {
    console.log($field.selector + " is not a date field!");
    $field.datepicker();
  }
}
</script>

(解决方案基于:http://www.javascriptkit.com/javatutors/createelementcheck2.shtml

我想解决的问题是确定客户端是否运行的浏览器没有<input type="date" />的本机日历弹出窗口;如果客户端在这样的浏览器上运行,我需要回退到datepicker。

问题:确定客户端浏览器是否支持日期弹出窗口的更准确但仍然优雅/可编程的方法是什么?

(注意:我建议我的团队放弃日期输入的愚蠢,只需使用日期选择器。)

0 个答案:

没有答案