JQuery UI datepicker可以绑定到一个图标吗?

时间:2013-04-18 09:43:40

标签: jquery jquery-ui datepicker jquery-ui-datepicker

我有一些看起来像

的HTML
<select id="day"><option>Day</option></select>
<select id="month"><option>Month</option></select>
<select id="year"><option>Year</option></select>
<img src="img/some-icon.png" id="datepicker" />

我无法将$("#datepicker").datepicker()绑定到上面的图标。它只是不会显示日历。

JQuery UI示例始终将datepicker绑定到输入字段。我只是想知道有没有另一种方法来实现这一目标?

编辑:我正在使用隐藏字段,如下所示。只是想知道我是否有办法避免使用隐藏字段

4 个答案:

答案 0 :(得分:1)

您错过了"的{​​{1}},应该是:

id

答案 1 :(得分:0)

另一种方法是让控件绑定到输入字段。让它隐藏起来。然后是您图标的onclick,只需拨打输入字段的onFocus()即可。

答案 2 :(得分:0)

<input type="text" id="datepicker"/>
<img src="img/some-icon.png" id="datepick" />

使用上面的代码显示日历。如果要隐藏文本框,请使用type =“hidden”。

点击JS代码下面的隐藏文本框。

$("#datepick").click(function(){
     $("#datepicker").click();
     $("#datepicker").datepicker();
});

答案 3 :(得分:0)

如果有人有兴趣了解我是如何为此创建插件的,请按照以下代码操作。我不得不在最后有一个隐藏的领域,但它确实是我能够找到成功使用日历的唯一方法。

HTML

<select id="day"><option>Day</option></select>
<select id="month"><option>Month</option></select>
<select id="year"><option>Year</option></select>
<input type="hidden" id="date-selector"> 

的JavaScript

$.fn.showCalendar = function(options){
    var defaults ={
        selector : "#date-selector",
        calendarIcon : "./images/icons/calendar.gif",
        numberOfSelectableDays : "+60D",
        dateFormat: "dd/mm/yy",
        numberOfMonths : 3,
        daySelector : "#day",
        monthSelector : "#month",
        yearSelector : "#year"
    }

    var $this = $(this);
    var params = $.extend({},defaults, options);

    var getDateFromDropDowns = function(){
         var dateOnDropDowns =  new Date($(params.daySelector).val(),$(params.monthSelector).val(),$(params.yearSelector).val());
         return  dateOnDropDowns;
    }


    return $this.each(function(){
        $this.datepicker({
            showOn: "button",
            buttonImage: params.calendarIcon,
            minDate: 0,
            maxDate: params.numberOfSelectableDays,
            dateFormat: params.dateFormat,
            buttonImageOnly: true,
            numberOfMonths: params.numberOfMonths,
            setDate : getDateFromDropDowns,
            onClose: function(dateText, inst) {
                $(params.yearSelector).val(dateText.split('/')[2]);
                $(params.daySelector).val(dateText.split('/')[0]);
                $(params.monthSelector).val(dateText.split('/')[1]);
            }
        });
    });
},