2010-02-04 4 views
15

Я использую JQuery в UI DatePicker: http://jqueryui.com/demos/datepicker/JQuery UI Datepicker: Создание триггера ссылка 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> 

Любые идеи?

ответ

6

Это может помочь кому-то еще.

В итоге я получил его для работы с пользовательским интерфейсом JQuery.

код ниже:

$(".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 идентификатор класса дата-подборщика

+0

В каком HTML вы попали? Добавили ли вы также класс выбора даты в ссылки? У меня проблемы с этим на моем конце. – Steve

+1

Это не отвечает на вопрос вообще. Это не использует ссылку для запуска календаря - это просто использование buttonImage, чтобы открыть его. По-прежнему требуется поле ввода, которое вы можете или даже не можете ... – nzifnab

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 
}); 
+0

Благодарим за ответ. К сожалению, я пробовал это, и он тоже не работает. –

+0

Я как-то забыл функцию 'datepicker()' раньше, и свойство 'buttonImage', вероятно, должно быть адаптировано, как предполагает ваш собственный ответ. Извините за неточность. –

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> 
+0

На сегодняшний день самое простое решение с наименее добавленным кодом и hijinks. Спасибо! – nicholeous

+0

Да, мне это нравится :) +1 – entiendoNull

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(); 
}); 
+0

Спасибо, до сих пор лучшее решение, которое я нашел :) – Siim

+3

Это решение не работает в Chrome 29 с jQuery 1.9 – kibibu

+0

Работает для меня на хроме, единственная проблема У меня есть то, что он прокручивает меня до дна, поэтому я отредактировал его, чтобы добавить datepicker только один раз, щелкнув ссылку и добавив ее к родительскому элементу текущего щелкнутого элемента. –

18

Я просто решил это очень легко в моем приложении - если у вас есть DatePicker открытого с текстовым полем, вы можете использовать это решение тоже. Я добавил ссылку на значок $('#date_field').focus(). Щелкните значок, текстовое поле получает фокус, и это вызывает запуск датпикера. Вуаля.

+1

Мне нравится это решение, быстрое и легкое. – Winterain

+1

Спасибо! Этот метод также полезен для создания простой кнопки, которая открывает кнопку даты нажима на кнопку (без дополнительной боковой кнопки, которая создается, если вы используете кнопку 'onShow:" «параметр datepicker), например:' ' где в другом месте вы делаете нормальный '$ (" # date "). datepicker()'. – Ghopper21

+1

Такая простая идея ... спасибо! –

0

С inline datepicker довольно легко сделать это. Проверьте мой JSFiddle.

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(); 
    } 
}); 
4

на основе @camilokawerin ответа, я сделал это, и я считаю его easieast и чистое решение:

HTML:

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

JS:

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

Кажется приятным, но как вы можете получить выбранную дату? – tiho

+1

@tiho Я забираю его в методе 'onSelect' ... Все в документах http://api.jqueryui.com/datepicker/#option-onSelect – Pere