2010-02-04 21 views
15

Sto usando UI datepicker di JQuery: http://jqueryui.com/demos/datepicker/JQuery UI Datepicker: Fare un datepicker grilletto

implementato qui:

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

voglio usare un link come il grilletto ma non ci riesco farlo funzionare.

Ecco il mio codice:

// 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> 

Tutte le idee?

risposta

6

Questo potrebbe aiutare qualcun altro.

Ho finito per farlo funzionare con l'interfaccia utente di JQuery.

codice qui sotto:

$(".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 
     }); 

e ho cambiato il DatePicker id di classe data-pick

+0

Che codice HTML hai avuto? Hai aggiunto anche la classe data-pick ai link? Avendo problemi con questo dalla mia parte. – Steve

+1

Questo non risponde alla domanda affatto lol. Questo non sta usando un link per attivare il calendario - è solo usando il pulsante Immagine per aprirlo. Richiede ancora un campo di input che potresti avere o meno ... – nzifnab

0

Da jqueryui, sembra che si dovrebbe aggiungere showOn e forse (non so se è necessario) 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

Grazie per la risposta. Purtroppo ho provato e non sembra funzionare anche. –

+0

Ho in qualche modo dimenticato la funzione 'datepicker()' e la proprietà 'buttonImage' deve probabilmente essere adattata, come suggerisce la tua risposta. Mi dispiace per l'inesattezza. –

6

utilizzare:

<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

Di gran lunga la soluzione più semplice con il codice e gli hijink meno aggiunti. Grazie! – nicholeous

+0

Sì, mi piace questo :) +1 – entiendoNull

27

Si potrebbe fare qualcosa come ho fatto io in 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

Grazie, finora la soluzione migliore che ho trovato :) – Siim

+3

Questa soluzione non sembra funzionare in Chrome 29 con jQuery 1.9 – kibibu

+0

Works per me su Chrome, l'unico problema Ho è che mi scorre verso il basso, quindi l'ho modificato per aggiungere il datepicker una sola volta quando si fa clic sul collegamento e lo si aggiunge al genitore dell'elemento selezionato corrente. –

18

Ho appena risolto molto facilmente nella mia app - se avete il vostro datepicker aperto con un campo di testo, è possibile utilizzare questa soluzione anche. Ho aggiunto un collegamento $('#date_field').focus() all'icona. Fare clic sull'icona, il campo di testo diventa attivo e questo fa scattare il datepicker da aprire. Ecco.

+1

mi piace questa soluzione, semplice e veloce. – Winterain

+1

Grazie! Questa tecnica è anche utile per creare un semplice pulsante che apre il datepicker al clic (senza il pulsante laterale aggiuntivo che viene creato se si utilizza il parametro 'onShow:" "parametro' datepicker), in questo modo: '' dove altrove fai il normale '$ (" # date "). datepicker()'. – Ghopper21

+1

Un'idea così semplice ... grazie! –

0

Con inline datepicker è molto più semplice farlo. Controlla il mio 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

in base alla risposta @camilokawerin, ho fatto questo e lo trovo l'easieast e soluzione più pulita:

HTML:

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

JS:

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

Sembra carino ma come si ottiene la data selezionata? – tiho

+1

@tiho lo raccolgo nel metodo 'onSelect' ... Tutto è nei documenti http://api.jqueryui.com/datepicker/#option-onSelect – Pere