2012-03-21 4 views
9

Vorrei associare alla funzione "onSelect" datapicker inizializzata.jQuery - Come modificare le impostazioni di Datepicker dopo che è stato inizializzato

Ho cercato duramente di trovare una soluzione sul web, ma non ho avuto successo.

Chiunque può dirmi come si fa?

+0

Qual è il motivo non si può solo reinizializzare e legarsi al 'onSelect 'evento? http://jqueryui.com/demos/datepicker/#event-onSelect. O legare ad esso in primo luogo? – mrtsherman

+0

Cosa intendete per reinizializzazione? Ho provato a eseguire nuovamente il metodo datepicker sullo stesso elemento, ma senza fortuna '$ ('# OfferStartDate'). Datepicker ({ onSelect: function (dateText, inst) { console.debug (" Convalida ") ; } }); ' Per" no fortuna "intendo che non viene visualizzato nulla sulla console. – kubal5003

+0

C'è qualcos'altro di sbagliato nel tuo codice allora. Quello che hai pubblicato funziona bene. http://jsfiddle.net/6pCMR/. Per quanto riguarda il mio commento precedente, sembrava che stessimo cercando di modificare un datepicker esistente, non di crearne uno nuovo - 'bind to initialized" onSelect "function' – mrtsherman

risposta

16

Si può semplicemente utilizzare il setter

$('#datepicker').datepicker(); 
$('#datepicker').datepicker("option", "onSelect", function(){alert('hi')}); 

violino qui http://jsfiddle.net/nhmsZ/

+0

Protip - Quando pubblichi violini dell'interfaccia utente di jQuery Includo questo tema come una risorsa che rende tutto più bello. E 'il più grande successo per 'demo aristo tema' - http://jsfiddle.net/6pCMR/ – mrtsherman

+0

che uomini di .datepicker(); puoi spiegare – shafi

0

Prima di tutto la risposta di Nicola è corretta e mi ha aiutato. Stavo cercando alcuni post correlati che non risolvevano davvero il mio problema.

Sto scrivendo questo per espandere la risposta esistente. Se utilizzi un framework che limita la tua capacità di controllare l'ordine di esecuzione del tuo JavaScript, ad esempio Zend Framework, potresti dover licenziare l'opzione di bind con un ritardo.

$(document).ready(function() { 
     function imahackfunction() { 
      $('#startdate').datepicker('option', 'onSelect', function() { 
       alert($('#startdate').val()); 
      }); 
     } 
     setTimeout(imahackfunction, 2000); 
    }); 

È possibile che questo ha lavorato per me, come ho due blocchi, uno $(document).ready(function() { apro a mio avviso, l'altra "iniettato" dal quadro che crea un'istanza del DatePicker.

Quello che mi chiedo è il motivo per il DatePicker non si limita a fuoco l'evento change sull'ingresso associato dalla proprietà altField ...

0

ho trovato le soluzioni di cui sopra ha causato problemi nel mio caso. L'impostazione onSelect dopo che il datepicker è già stato inizializzato sembra causare il reinizializzazione del datepicker. Questo potrebbe non essere desiderabile.

In caso di problemi potrebbe essere necessario passare attraverso la porta di servizio. Ciò potrebbe avere problemi di compatibilità quando JQUI è aggiornato, ma se siete disposti a trattare con quello, allora questo codice potrebbe aiutarti ...

var inst = $.datepicker._getInst($('#startdate').get(0)); 
inst.settings.onSelect = function (dt) { 
    // your code here 
};