在我的phonegap应用中,我创建了一个datepicker字段。对于这个,我使用了jquery-ui-datepicker插件,并且没有在我的javascript文件中写任何动作。
我的问题是日期选择器始终可见,但我想在单击日期字段时显示它并在选择日期时隐藏它。
我的HTML代码:
<div data-role="fieldcontain" class="ui-hide-label">
<label for="mDOB">DOB</label>
<input type="date" name="date" id="date" value="" />
</div>
和我的datepicker ui代码:
(function($, undefined ) {
//cache previous datepicker ui method
var prevDp = $.fn.datepicker;
//rewrite datepicker
$.fn.datepicker = function( options ){
var dp = this;
//call cached datepicker plugin
prevDp.call( this, options );
//extend with some dom manipulation to update the markup for jQM
//call immediately
function updateDatepicker(){
$( ".ui-datepicker-header", dp ).addClass("ui-body-c ui-corner-top").removeClass("ui-corner-all");
$( ".ui-datepicker-prev, .ui-datepicker-next", dp ).attr("href", "#");
$( ".ui-datepicker-prev", dp ).buttonMarkup({iconpos: "notext", icon: "arrow-l", shadow: true, corners: true});
$( ".ui-datepicker-next", dp ).buttonMarkup({iconpos: "notext", icon: "arrow-r", shadow: true, corners: true});
$( ".ui-datepicker-calendar th", dp ).addClass("ui-bar-c");
$( ".ui-datepicker-calendar td", dp ).addClass("ui-body-c");
$( ".ui-datepicker-calendar a", dp ).buttonMarkup({corners: false, shadow: false});
$( ".ui-datepicker-calendar a.ui-state-active", dp ).addClass("ui-btn-active"); // selected date
$( ".ui-datepicker-calendar a.ui-state-highlight", dp ).addClass("ui-btn-up-e"); // today"s date
$( ".ui-datepicker-calendar .ui-btn", dp ).each(function(){
var el = $(this);
// remove extra button markup - necessary for date value to be interpreted correctly
el.html( el.find( ".ui-btn-text" ).text() );
});
};
//update now
updateDatepicker();
// and on click
$( dp ).click( updateDatepicker );
//return jqm obj
eturn this;
};
//bind to pagecreate to automatically enhance date inputs
$( ".ui-page" ).live( "pageshow", function(){
$( "input[type='date'], input:jqmData(type='date')", this ).each(function(){
$(this).after( $( "<div />" ).datepicker({ altField: "#" + $(this).attr( "id" ), showOtherMonths: true }) );
});
});
})( jQuery );
建议一些解决方案或提供一些示例日期选择器。
答案 0 :(得分:2)
在DIV上初始化datepicker使它始终可见,并且在输入聚焦时初始化输入上的datepicker会使其弹出,现在你正在创建一个初始化datepicker的新DIV元素,并且然后在()输入后插入DIV 尝试删除该DIV并直接在输入上初始化datepicker:
$( "input[type='date'], input:jqmData(type='date')", this ).each(function(){
$(this).datepicker({ altField: "#" + $(this).attr( "id" ), showOtherMonths: true });
});