在Chrome 20上,日期选择器已经推出了,是否有任何属性可以禁用它? 我的整个系统使用jQuery UI日期选择器,并且是跨浏览器的,因此我想禁用Chrome本机的日期选择器。是否有任何标签属性可以实现?
在Chrome 20上,日期选择器已经推出了,是否有任何属性可以禁用它? 我的整个系统使用jQuery UI日期选择器,并且是跨浏览器的,因此我想禁用Chrome本机的日期选择器。是否有任何标签属性可以实现?
input::-webkit-calendar-picker-indicator{
display: none;
}
而要隐藏提示:
input[type="date"]::-webkit-input-placeholder{
visibility: hidden !important;
}
如果你误用了 <input type="date" />
,你可能可以使用以下内容:
$('input[type="date"]').attr('type','text');
在它们被加载后,将它们转换为文本输入框。你需要先附加你的定制日期选择器:
$('input[type="date"]').datepicker().attr('type','text');
或者你可以给它们一个类:
$('input[type="date"]').addClass('date').attr('type','text');
jQuery('input[type="date"]').live('click', function(e) {e.preventDefault();}).datepicker();
jQuery('input[type="date"]').on('click', function(e) {e.preventDefault();}).datepicker();
- yorchinput[type=date]::-webkit-inner-spin-button,
input[type=date]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
使用Modernizr (http://modernizr.com/),它可以检查该功能是否可用。然后您可以将其与其返回的布尔值绑定:
// does not trigger in Chrome, as the date Modernizr detects the date functionality.
if (!Modernizr.inputtypes.date) {
$("#opp-date").datepicker();
}
上述代码不会设置输入元素的值,也不会触发更改事件。下面的代码适用于 Chrome 和 Firefox(未在其他浏览器中测试):
$('input[type="date"]').click(function(e){
e.preventDefault();
}).datepicker({
onSelect: function(dateText){
var d = new Date(dateText),
dv = d.getFullYear().toString().pad(4)+'-'+(d.getMonth()+1).toString().pad(2)+'-'+d.getDate().toString().pad(2);
$(this).val(dv).trigger('change');
}
});
pad是一个简单的自定义字符串方法,用于在字符串前面填充零(必需)
$ ->
# disable chrome's html5 datepicker
for datefield in $('input[data-datepicker=true]')
$(datefield).attr('type', 'text')
# enable custom datepicker
$('input[data-datepicker=true]').datepicker()
被转换成普通JavaScript的:
(function() {
$(function() {
var datefield, _i, _len, _ref;
_ref = $('input[data-datepicker=true]');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
datefield = _ref[_i];
$(datefield).attr('type', 'text');
}
return $('input[data-datepicker=true]').datepicker();
});
}).call(this);
我同意Robertc的观点,最好的方法不是使用type=date,但我的JQuery Mobile Datepicker插件确实在使用它。因此我需要做一些更改:
我正在使用jquery.ui.datepicker.mobile.js,并进行了以下更改(第51行):
$( "input[type='date'], input:jqmData(type='date')" ).each(function(){
到
$( "input[plug='date'], input:jqmData(plug='date')" ).each(function(){
<input type="text" plug="date" name="date" id="date" value="">
data-*
属性。在这种情况下,将您的属性命名为 data-plug
而不是 plug
,这样就确保它永远不会与 HTML6/7/8 等中添加的任何新属性发生冲突。 - robertc
// Hide Chrome datetime picker
$('input[type="datetime-local"]').attr('type', 'text');
// Reset date values
$("#EffectiveDate").val('@Model.EffectiveDate.ToShortDateString()');
$("#TerminationDate").val('@Model.TerminationDate.ToShortDateString()');
不确定我是否在这里漏了什么诀窍,但是试一下:
我将底层输入字段的类型从日期更改为文本。实际上禁用了原生控件,并允许自定义日期时间选择器正确显示。
<input type="text" id="Demo">