2013-09-24 10 views
5

Qualcuno può dirmi come si attiva l'evento onselect di datepicker? Il mio codice funziona bene (estraendo alcuni dati da un database basato sul valore di altopiano datepickers) ma quando la pagina viene caricata non attiva l'evento onselect nella data corrente e non visualizza nulla; quindi mi piacerebbe farlo manualmente.Attiva manualmente il datapicker onselect

<script> 
    $("#datepicker").datepicker 
    (
    { 
      altField: '#sheet', 
      onSelect: function load() { 
      $(document).ready(function() { 
        $.ajax({ 
        type: 'POST', 
        url: 'test.php', 
        data: {sheetid: $('#sheet').val()}, 
        success: function(data) 
        { 
         $("#content").html(data); 
        } 
       }); 

     }); 
     }, 
      firstDay: 1}); 
    </script> 
+1

prova innescando un evento click per il datepicker nel '' body' onload' funzione o '$ (document) .ready()' 'utilizzando $ ('# datepicker ') .click(); ' – rps

risposta

15

È possibile attivare un click sulla datepicker destra dopo il set della data.

Codice:

$(document).ready(function() { 
    $("#datepicker").datepicker({ 
     altField: '#sheet', 
     onSelect: function(date) { 
      alert(date); 
     }, 
     firstDay: 1 
    }); 

    $('#datepicker').datepicker("setDate", new Date(2013,09,22)); 
    $('.ui-datepicker-current-day').click(); // rapresent the current selected day 

}); 

Demo: http://jsfiddle.net/IrvinDominin/DynuW/

+1

Trucchi magici hehe, grazie! – Daria

0

ho preso questo dal codice sorgente del file datepicker.js. Notare che this deve essere sostituito con l'elemento di input (non l'oggetto jquery, l'effettivo elemento dom). Nel mio caso, stavo chiamando questo da un evento keydown.

// this is SUCH a hack. We need to call onselect to call any 
// specific validation on this input. I stole this from the datepicker source code. 
var inst = $.datepicker._getInst(this), 
onSelect = $.datepicker._get(inst, "onSelect"); 
if (onSelect) { 
    dateStr = $.datepicker._formatDate(inst); 
    onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
} 
0

migliore soluzione

var inst = $.datepicker._getInst($("#date")[0]); 
$.datepicker._get(inst, 'onSelect').apply(inst.input[0], [$("#date").datepicker('getDate'), inst]); 
+0

Puoi spiegare di più perché questa è la "soluzione migliore", o almeno come funziona? Non prenderei in considerazione l'uso di funzioni "nascoste" interne del modulo jQuery datepicker per essere una buona soluzione, per non parlare del "migliore". –