JQuery UI Datepicker:创建一个链接触发器datepicker

时间:2010-02-04 10:01:49

标签: jquery-ui hyperlink datepicker

我正在使用JQuery的UI datepicker:http://jqueryui.com/demos/datepicker/

在这里实施:

http://www.clients.eirestudio.net/old/

我想使用链接作为触发器,但我无法使其工作。

这是我的代码:

// JQuery UI
$("#datepicker").datepicker({
      changeMonth: true,
      changeYear: true,
      maxDate: '0m 0d',
      minDate: new Date(2000, 1 - 1, 1),
      dateFormat: 'dd-mm-yy'
});

<p class="clearfix hidden">
    <input id="" class="input float datepicker" type="input" name="" value="" />
    <a class="calendar ui-icon ui-icon-calendar">Date</a>

    <span class="mid-info">To</span>
    <input id="" class="input datepicker" type="input" name="" value="" />
    <a class="calendar" href="#">Date</a>
</p>

有什么想法吗?

7 个答案:

答案 0 :(得分:27)

你可以像我在this fiddle

那样做

HTML:

<a href="#" id="toggleDP">Toggle</a>

JS:

var $dp = $("<input type='text' />").hide().datepicker({
    onSelect: function(dateText, inst) {
       $("body").append("<div>Selected "+dateText+"</div>");
    }
}).appendTo('body');

$("#toggleDP").button().click(function(e) {
    if ($dp.datepicker('widget').is(':hidden')) {
        $dp.show().datepicker('show').hide();
        $dp.datepicker("widget").position({
            my: "left top",
            at: "right top",
            of: this
        });
    } else {
        $dp.hide();
    }

    //e.preventDefault();
});

答案 1 :(得分:18)

我只是在我的应用程序中轻松解决了这个问题 - 如果您的文本字段打开了日期选择器,您也可以使用此解决方案。我在图标中添加了$('#date_field').focus()链接。单击图标,文本字段将获得焦点,并触发打开日期选择器。瞧。

答案 2 :(得分:6)

这可能有助于其他人。

我最终让它与JQuery UI一起工作。

以下代码:

$(".date-pick").datepicker({
      changeMonth: true,
      changeYear: true,
      maxDate: '0m 0d',
      minDate: new Date(2000, 1 - 1, 1),
      dateFormat: 'dd-mm-yy',
      showOn: 'button', 
      buttonImage: 'http://www.example.com/elements/images/calendar.png', 
      buttonImageOnly: true
      });

我将datepicker id更改为date-pick class

答案 3 :(得分:6)

尝试使用:

    <a href="javascript:void(0);" onclick="$.datepicker._showDatepicker($('#inputID')[0]);">Text here</a>
    <input type="hidden" id="inputID"/>
    ...
    <script type="text/javascript">
      $(document).ready(
         function()
         {
             $('#inputID').datepicker();
         }
      );
    </script>

答案 4 :(得分:4)

根据@camilokawerin的回答,我做到了这一点,我发现它是最简单,最干净的解决方案:

HTML:

<a href="#" id="selec">Click</a> <div id="datepicker" style="display:none"></div>

JS:

$("#datepicker").datepicker();
$('#selec').click(function(){
    $('#datepicker').toggle();
});

答案 5 :(得分:0)

jqueryui开始,您似乎应该添加showOn并且可能(不知道是否需要)buttonImage

$("#datepicker").datepicker({
    changeMonth: true,
    changeYear: true,
    maxDate: '0m 0d',
    minDate: new Date(2000, 1 - 1, 1),
    dateFormat: 'dd-mm-yy',
    showOn: 'button', 
    buttonImage: 'images/calendar.gif', // adapt this to your image
    buttonImageOnly: true
});

答案 6 :(得分:0)

inline datepicker使用JSFiddle非常容易。检查我的{{3}}。

HTML

<a href="#" class="datepicker">Pick a date</a>

JS

var dpToggler = $('a.datepicker').button(),
    dp = $("<div />").css('position', 'absolute').hide().datepicker().appendTo(dpToggler);

dpToggler.on('click', function(e) {
  e.preventDefault();
  if (dp.is(':hidden')) {
    dp.show().position({
      my: 'left top',
      at: 'right top',
      of: this
    });
  } else {
    dp.hide();
  }
});