日期选择器降落在Chrome 20上,是否有任何属性可以将其禁用?我的整个系统都使用jQuery UI datepicker及其跨浏览器,因此,我想禁用Chrome本机datepicker。有标签属性吗?
日期选择器降落在Chrome 20上,是否有任何属性可以将其禁用?我的整个系统都使用jQuery UI datepicker及其跨浏览器,因此,我想禁用Chrome本机datepicker。有标签属性吗?
Answers:
隐藏箭头:
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();
使用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是一个简单的自定义String方法,以零填充字符串(必填)
我同意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(){
并在use形式中键入text并添加var插件:
<input type="text" plug="date" name="date" id="date" value="">
data-*
attributes。在这种情况下,请调用您的属性data-plug
而不是plug
,这样可以确保它永远不会与HTML6 / 7/8 / etc中添加的任何新属性发生冲突。
我使用以下(咖啡脚本):
$ ->
# 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);
这为我工作:
// Hide Chrome datetime picker
$('input[type="datetime-local"]').attr('type', 'text');
// Reset date values
$("#EffectiveDate").val('@Model.EffectiveDate.ToShortDateString()');
$("#TerminationDate").val('@Model.TerminationDate.ToShortDateString()');
即使日期字段的值仍然存在并且正确,它也不会显示。这就是为什么我从视图模型重置日期值的原因。
这对我有用:
;
(function ($) {
$(document).ready(function (event) {
$(document).on('click input', 'input[type="date"], input[type="text"].date-picker', function (e) {
var $this = $(this);
$this.prop('type', 'text').datepicker({
showOtherMonths: true,
selectOtherMonths: true,
showButtonPanel: true,
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
showWeek: true,
firstDay: 1
});
setTimeout(function() {
$this.datepicker('show');
}, 1);
});
});
})(jQuery, jQuery.ui);
也可以看看:
我知道这是一个古老的问题,但是我只是在这里登陆以查找有关此信息,所以其他人也可能会这样做。
您可以使用Modernizr来检测浏览器是否支持HTML5输入类型,例如“日期”。如果是这样,这些控件将使用本机行为来显示日期选择器之类的内容。如果不是,则可以指定应使用哪个脚本来显示自己的日期选择器。对我来说效果很好!
我在页面上添加了jquery-ui和Modernizr,然后添加了以下代码:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(initDateControls);
initDateControls();
function initDateControls() {
//Adds a datepicker to inputs with a type of 'date' when the browser doesn't support that HTML5 tag (type=date)'
Modernizr.load({
test: Modernizr.inputtypes.datetime,
nope: "scripts/jquery-ui.min.js",
callback: function () {
$("input[type=date]").datepicker({ dateFormat: "dd-mm-yy" });
}
});
}
</script>
这意味着本地日期选择器显示在Chrome中,而jquery-ui一个显示在IE中。
对于Laravel5
{!! Form :: input('date','date_start',null,['class'=>'form-control','id'=>'date_start','name'=>'date_start'])!!}
=> Chrome将强制其日期选择器。=>如果您将它与CSS一起使用,则会遇到常见的格式错误!!(指定的值不符合要求的格式“ yyyy-MM-dd”。)
解:
$('input [type =“ date”]')。attr('type','text');
$("#date_start").datepicker({
autoclose: true,
todayHighlight: true,
dateFormat: 'dd/mm/yy',
changeMonth: true,
changeYear: true,
viewMode: 'months'
});
$("#date_stop").datepicker({
autoclose: true,
todayHighlight: true,
dateFormat: 'dd/mm/yy',
changeMonth: true,
changeYear: true,
viewMode: 'months'
});
$( "#date_start" ).datepicker().datepicker("setDate", "1d");
$( "#date_stop" ).datepicker().datepicker("setDate", '2d');