我有几个输入type =“date”,并且想要禁用Microsoft Edge中的默认日期选择器,因为我使用的是jQuery的datepicker。如何使用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;
}
答案 0 :(得分:2)
无法在Edge(although Chrome can via a hack)中禁用本机datepicker控件功能 - 无论如何。
输入控件,除非由浏览器设计,通常基于/是系统控件。这意味着输入日期选择器是输入日期选择器,select
下拉列表是select
下拉列表。
除了边框,填充和字体样式等基本样式以及HTML标准属性之外,大多数控件在定制方面都受到限制。 placeholder
。
您有几个选择:
保留默认的datepicker控件
这是我推荐的选项。坚持使用默认系统控件(+适用的样式)通常是最好的策略。这可确保最大程度地提高设备兼容性,并使用户熟悉。此外,一切通常都“正常”。
JS代码的开销也更少。
邪恶选项:浏览器检测
你可以检测浏览器是否是JS代码中的Edge,然后告诉它渲染jQuery控件。你应该避免这种情况,除非你真的需要它,因为浏览器检测变得过时并且维护噩梦很快。
答案 1 :(得分:1)
输入类型必须是文本而不是日期。此...
<input type="date" />
应该是
<input type="text" />
否则Chrome和Edge会添加日期选择器。而是使用类或ID将其标识为datepicker并执行类似$(".datepicker").datepicker();
答案 2 :(得分:1)
与Cyptic一样,我必须将类型更改为文本
<input type="text" class="datepicker"/>
然后在JQuery中
$("input.datepicker:text").datepicker({
showOn: "both",
dateFormat: "dd MM yy",
changeMonth: true,
changeYear: true
});
答案 3 :(得分:0)
如果您是伊朗人,请访问this page
并将类型更改为文本
<input type="text" id="datepicker"/>
和jQuery
$("#datepicker").kamaDatepicker('BirthDate-ID');