我想在用户点击图片时打开JQuery Datepicker。没有输入字段,之后显示所选日期;我只是想通过Ajax将输入的日期保存到服务器。
目前我有这段代码:
<img src='someimage.gif' id="datepicker" />
$(document).ready(function() {
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
}).click(function() { $(this).datepicker('show'); });
});
但是当我点击图片时没有任何反应。我也尝试将datepicker()调用的结果保存到全局var,然后从图像的onclick()事件中调用datepicker('show'),但结果相同。
答案 0 :(得分:117)
事实证明,一个简单的隐藏输入字段可以完成这项工作:
<input type="hidden" id="dp" />
然后使用图像的buttonImage属性,正常情况下:
$("#dp").datepicker({
buttonImage: '../images/icon_star.gif',
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
showOn: 'both',
});
最初我尝试了一个文本输入字段,然后在其上设置了display:none
样式,但这导致日历从浏览器顶部出现,而不是从用户点击的位置出现。但隐藏的字段可以按预期工作。
答案 1 :(得分:23)
jQuery文档说,当datePicker与输入框没有关联时,它需要连接到SPAN或DIV。你可以这样做:
<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>
答案 2 :(得分:23)
如果您使用输入字段和图标(如此示例):
<input name="hasta" id="Hasta" type="text" readonly />
<a href="#" id="Hasta_icono" ></a>
您可以将日期选择器附加到您的图标(在我的情况下通过CSS在A标签内),如下所示:
$("#Hasta").datepicker();
$("#Hasta_icono").click(function() {
$("#Hasta").datepicker( "show" );
});
答案 3 :(得分:8)
当鼠标悬停在日历图标上时更改“...”,您需要在datepicker选项中添加以下内容:
showOn: 'button',
buttonText: 'Click to show the calendar',
buttonImageOnly: true,
buttonImage: 'images/cal2.png',
答案 4 :(得分:3)
HTML:
<div class="CalendarBlock">
<input type="hidden">
</div>
CODE:
$CalendarBlock=$('.CalendarBlock');
$CalendarBlock.click(function(){
var $datepicker=$(this).find('input');
datepicker.datepicker({dateFormat: 'mm/dd/yy'});
$datepicker.focus(); });
答案 5 :(得分:2)
具有隐藏的输入字段会导致datepicker对话框定位出现问题(对话框水平居中)。你可以改变对话框的边距,但有更好的方法。
只需创建一个输入字段,然后&#34;隐藏&#34;它将它的不透明度设置为0并使其宽度为1px。同时将其放置在按钮附近(或下方),或者您希望出现日期选择器的位置。
然后将日期选择器附加到&#34;隐藏&#34;输入字段,并在用户按下按钮时显示。
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');
});
});
注意:未经过所有浏览器的测试。
答案 6 :(得分:1)
$(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'
});
});
以上代码属于this link
答案 7 :(得分:0)
<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函数来完成的。