点击没有input字段的图像打开JQuery Datepicker

我想要在用户单击图像时打开JQuery Datepicker。 没有input字段,select的date之后出现; 我只是将input的date通过Ajax保存到服务器。

目前我有这样的代码:

<img src='someimage.gif' id="datepicker" /> $(document).ready(function() { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, }).click(function() { $(this).datepicker('show'); }); }); 

但是当我点击图片时没有任何反应。 我也尝试将datepicker()调用的结果保存到全局variables,然后从图像的onclick()事件中调用datepicker('show'),但结果相同。

原来,一个简单的隐藏input字段做的工作:

 <input type="hidden" id="dp" /> 

然后使用buttonImage属性为你的图像,像正常的:

  $("#dp").datepicker({ buttonImage: '..http://img.dovov.comicon_star.gif', buttonImageOnly: true, changeMonth: true, changeYear: true, showOn: 'both', }); 

最初我尝试了一个文本input字段,然后设置一个display:none样式,但是这导致日历从浏览器的顶部出现,而不是从用户点击的位置出现。 但隐藏的领域按需要工作。

jQuery文档说datePicker需要连接到一个SPAN或DIV,当它没有与input框关联时。 你可以做这样的事情:

 <img src='someimage.gif' id="datepickerImage" /> <div id="datepicker"></div> <script type="text/javascript"> $(document).ready(function() { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, }) .hide() .click(function() { $(this).hide(); }); $("#datepickerImage").click(function() { $("#datepicker").show(); }); }); </script> 

如果您正在使用input字段和图标(如下例):

 <input name="hasta" id="Hasta" type="text" readonly /> <a href="#" id="Hasta_icono" ></a> 

您可以将dateselect器附加到您的图标(在我的情况下通过CSS在A标签)像这样:

 $("#Hasta").datepicker(); $("#Hasta_icono").click(function() { $("#Hasta").datepicker( "show" ); }); 

要将鼠标hover在日历图标上时更改“…”,您需要在datepicker选项中添加以下内容:

  showOn: 'button', buttonText: 'Click to show the calendar', buttonImageOnly: true, buttonImage: 'images/cal2.png', 

HTML:

 <div class="CalendarBlock"> <input type="hidden"> </div> 

码:

 $CalendarBlock=$('.CalendarBlock'); $CalendarBlock.click(function(){ var $datepicker=$(this).find('input'); datepicker.datepicker({dateFormat: 'mm/dd/yy'}); $datepicker.focus(); }); 

有一个隐藏的input字段导致datepicker对话框定位问题(对话框水平居中)。 你可以改变对话框的边距,但有一个更好的方法。

只需创build一个input字段,并通过将其设置为0并将其设置为1px宽来“隐藏”它。 也将其放在靠近(或下面)button,或任何你想要dateselect器出现。

然后将dateselect器附加到“隐藏”input字段,并在用户按下button时显示它。

HTML:

 <button id="date-button">Show Calendar</button> <input type="text" name="date-field" id="date-field" value=""> 

CSS:

 #date-button { position: absolute; top: 0; left: 0; z-index: 2; height 30px; } #date-field { position: absolute; top: 0; left: 0; z-index: 1; width: 1px; height: 32px; // height of the button + a little margin opacity: 0; } 

JS:

 $(function() { $('#date-field').datepicker(); $('#date-button').on('click', function() { $('#date-field').datepicker('show'); }); }); 

注意:未经过所有浏览器的testing。

 $(function() { $("#datepicker").datepicker({ //showOn: both - datepicker will come clicking the input box as well as the calendar icon //showOn: button - datepicker will come only clicking the calendar icon showOn: 'button', //you can use your local path also eg. buttonImage: 'images/x_office_calendar.png' buttonImage: 'http://theonlytutorials.com/demo/x_office_calendar.png', buttonImageOnly: true, changeMonth: true, changeYear: true, showAnim: 'slideDown', duration: 'fast', dateFormat: 'dd-mm-yy' }); }); 

上面的代码属于这个链接

 <img src='someimage.gif' id="datepicker" /> <input type="hidden" id="dp" /> $(document).on("click", "#datepicker", function () { $("#dp").datepicker({ dateFormat: 'dd-mm-yy', minDate: 'today'}).datepicker( "show" ); }); 

你只需添加这个代码的图像点击或任何其他的HTML标签点击事件。 这是通过点击触发器时启动datepicker函数来完成的。