2012-03-21 14 views
9

Me gustaría enlazar a la función "onSelect" de datepicker inicializado.jQuery - cómo alterar la configuración de Datepicker después de que se ha inicializado

He estado tratando de encontrar una solución en la web, pero no he tenido éxito.

¿Alguien me puede decir cómo hacerlo?

+0

algún motivo no se puede simplemente reiniciar y enlazar con el 'onselect 'evento? http://jqueryui.com/demos/datepicker/#event-onSelect. ¿O vincularse a ella en primer lugar? – mrtsherman

+0

¿A qué te refieres con reiniciar? Intenté activar el método datepicker una vez más en el mismo elemento, pero sin suerte '$ ('# OfferStartDate'). Datepicker ({ onSelect: function (dateText, inst) { console.debug (" Validación ") ; } }); ' Por" sin suerte "quiero decir que no se muestra nada en la consola. – kubal5003

+0

Entonces, hay algo más que está mal con su código. Lo que publicaste funciona bien. http://jsfiddle.net/6pCMR/. En lo que respecta a mi comentario anterior, sonaba como si estuvieras tratando de modificar un datepicker existente, no crear uno nuevo - 'bind to initialized 'onSelect' function' – mrtsherman

Respuesta

16

simplemente Puede usar la incubadora

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

violín aquí http://jsfiddle.net/nhmsZ/

+0

Protip: al publicar jQuery UI, incluyo este tema como un recurso que hace que todo se vea bien. Es el éxito principal para la demostración del tema 'aristo' - http://jsfiddle.net/6pCMR/ – mrtsherman

+0

what u men by .datepicker(); puedes explicar – shafi

0

En primer lugar la respuesta de Nicola es correcta y me ayudó. Estaba encontrando algunos mensajes relacionados que realmente no resolvían mi problema.

Escribo esto para ampliar la respuesta existente. Si usa un marco que limite su capacidad para controlar el orden de ejecución de su JavaScript, digamos por ejemplo Zend Framework, es posible que deba desactivar esa opción de enlace con un retraso.

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

Lo anterior trabajó para mí, ya que tengo dos bloques, uno $(document).ready(function() { abro mi punto de vista, la otra "inyectados" por el marco que crea una instancia del planificador de evento.

Lo que me pregunto es por qué el selector de fechas no se limita a disparar el evento change en la entrada asociada directamente en el hotel altField ...

0

he encontrado las soluciones anteriores causaron problemas en mi caso. La configuración de onSelect después de que el datepicker ya se haya inicializado parece hacer que se reinicie el datepicker. Esto puede no ser deseable.

Si tiene problemas, puede ser necesario pasar por la puerta trasera. Esto podría tener problemas de compatibilidad al JQUI se actualiza, pero si usted está dispuesto a tratar con eso, entonces este código podría ayudar a salir ...

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