如何禁用Microsoft Edge中的日期选择器?

How do you disable the datepicker in Microsoft Edge?

本文关键字:日期 选择器 何禁用 Microsoft Edge      更新时间:2023-09-26

我有几个输入type="date"并希望禁用默认日期选择器在微软边缘,因为我使用jQuery的日期选择器。如何使用CSS或JavaScript禁用此功能?它在Chrome和Firefox中运行良好,但在Edge中不行。

一个工作的JSFiddle

HTML

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
<input type="date">

JS

$(document).ready(function() {
    if (!Modernizr.inputtypes.date || $(window).width() >= 900) {
        $('input[type=date]').datepicker();
    }
});
$(window).resize(function() {
    if (!Modernizr.inputtypes.date || $(window).width() >= 900) {
        $('input[type=date]').datepicker();             
    }
    else {
        $('input[type=date]').datepicker("destroy");
    }
});
CSS

input[type=date]::-webkit-inner-spin-button, input[type=date]::-webkit-calendar-picker-indicator  {
    display: none;
    -webkit-appearance: none;   
}

不可能在Edge中禁用本机日期选择器控制功能(尽管Chrome可以通过黑客)-然而无论如何

输入控件,除非是由浏览器设计的,一般都是基于系统控件。这意味着输入数据拾取器是输入数据拾取器,select下拉列表是select下拉列表。

除了基本的样式(如边框、填充和字体样式)和html标准属性(如placeholder)之外,大多数控件在自定义方面受到限制。

你有几个选择:

保持默认的日期选择器控件不变

这是我推荐的选项。坚持使用默认的系统控件(在适用的情况下使用样式)通常是最好的策略。这确保了最大的设备兼容性和用户的熟悉度。此外,一切正常"正常工作"。

在你的JS代码中也有更少的开销。

邪恶选项:浏览器检测

你可以在JS代码中检测浏览器是否为Edge,然后告诉它渲染jQuery控件。除非你真的需要,否则你应该避免这样做,因为浏览器检测很快就会过时,而且会成为维护的噩梦。

输入类型必须是文本而不是日期。这个…

<input type="date" />
应该

<input type="text" />

否则Chrome和Edge将添加日期选择器。相反,使用类或id将其标识为日期拾取器,并执行$(".datepicker").datepicker();

与Cyptic一样,我必须将类型更改为text

<input type="text" class="datepicker"/>

然后在JQuery

$("input.datepicker:text").datepicker({
    showOn: "both",
    dateFormat: "dd MM yy",
    changeMonth: true,
    changeYear: true
});