2013-09-05 8 views
7

Usiamo l'interfaccia utente 1.8.6 di jquery sul mio posto di lavoro.jQuery UI datepicker - Tentativo di acquisire l'evento click dalla data cliccata

Come posso acquisire la data su cui è stato fatto clic in datepicker, così posso formattare la data corrente in un datestamp e passare quel valore in un campo modulo nascosto?

Ecco alcuni codice che ho cercato di ottenere lavoro:

$('.ui-state-default').live('click', function(){ 
    console.log('date clicked'); 
    var currentdate = $(this).text(); 
    var d = currentdate; 
    var m = monthFormat($('.ui-datepicker-month').text()); 
    var y = $('.ui-datepicker-year').text(); 
    $('a.ui-state-default').removeClass('ui-state-highlight'); 
    $(this).addClass('ui-state-highlight'); 

    if (currentdate.length < 2) { 
    d = "0" + currentdate; 
    } 
    var datestamp = y + "-" + m + "-" + d; 
    console.log(datestamp); 
    $('#dateHidden').val(datestamp); 
}); 

Grazie per guardare il mio codice Apprezzo tutto l'aiuto voi ragazzi può offrire.

+2

Perché non stai usando l'evento onSelect? http://api.jqueryui.com/datepicker/#option-onSelect – j08691

risposta

12

Non è necessario fare nulla per formattare la data. Il widget DatePicker lo fa per te. Basta usare le altField e altFormat proprietà:

$("#myDatePicker").datepicker({ 
    // The hidden field to receive the date 
    altField: "#dateHidden", 
    // The format you want 
    altFormat: "yy-mm-dd", 
    // The format the user actually sees 
    dateFormat: "dd/mm/yy", 
    onSelect: function (date) { 
     // Your CSS changes, just in case you still need them 
     $('a.ui-state-default').removeClass('ui-state-highlight'); 
     $(this).addClass('ui-state-highlight'); 
    } 
}); 

Documentazione:

http://api.jqueryui.com/datepicker/#option-altField

http://api.jqueryui.com/datepicker/#option-altFormat

Dimostrazione:

http://jsfiddle.net/sFBn2/10/

+0

e in che modo viene esportato un valore in un campo nascosto? – bitmapshades

+1

Lo fa automaticamente. Ecco a cosa serve l'altfield? – melancia

+0

OK, ma come posso sapere se il valore viene passato al campo nascosto se gli strumenti per sviluppatori di Chrome non si aggiornano durante l'evento onSelect? – bitmapshades

0

Il tuo datepicker lo ascolta.

vedi onSelect() function

Chiamato quando viene selezionato il DatePicker. La funzione riceve la data selezionata come testo e l'istanza di datepicker come parametri. questo si riferisce al campo di input associato.

$('.date-pick').datepicker({ 
    onSelect: function(date) { 
     //play with date here 
    }, 
---- 
---- 
--- 
1

jQuery Datepicker dà l'opzione di data di formattazione. Quindi perché non ne fai uso?

$('element').datepicker({ dateFormat: 'dd-mm-yy' }); 

Inoltre, non è necessario un metodo separato per acquisire l'evento click. È il metodo di default onSelect

$('input').datepicker({ 
dateFormat: 'yy-mm-dd', 
    onSelect: function (date) { 
    //defined your own method here 
    alert(date); 
    } 
}) 

Scegli questa JSFiddle

+0

Posso conoscere il motivo di un downvote? – Praveen

+0

tutto ciò che fa è impostare l'attributo class = "hasDatepicker" nel campo nascosto. (Non ho votato io stesso). – bitmapshades

+0

@ bitmapshades Stai cercando di assegnare il valore a un campo nascosto. Non ho potuto ottenere quello che stai cercando di aggiungere datepicker classe? Correggetemi se mi sbagliavo. – Praveen

1
$('#calendar').datepicker({ 
     inline: true, 
     firstDay: 1, 
     changeMonth: false, 
     changeYear: true, 
     showOtherMonths: true, 
     showMonthAfterYear: false, 
     yearRange: "2015:2025",  
     dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
     dateFormat: "yy-mm-dd", 
     onSelect: function (date) { 
      alert(date); 
     } 
    }); 
+0

Si dovrebbe aggiungere una descrizione per la tua soluzione. –