Me gusta que jQueryUI datepicker sea lo suficientemente personalizable como para permitir que se active un botón que muestre el datepicker, pero, desafortunadamente, no le permite personalizar su propio marcado.¿Cómo puedo extender jQueryUI datepicker para que acepte un argumento adicional?
Si tengo marcado de este modo:
<span>
<input type="text" class="datepicker" />
</span>
<span>
<button class="datepicker-trigger">Open</button>
</span>
Con el fin de conseguir que el selector de fecha para mostrar al hacer clic en el botón, que tendría que poner en práctica el siguiente código:
$('.datepicker').datepicker({
showOn:'none'
});
$('.datepicker-trigger').click(function() {
$('.datepicker').datepicker('show');
});
Aquí es un jsFiddle del código anterior: http://jsfiddle.net/P9Qmu/
Esto está muy bien, pero lo que yo realmente quiero hacer es pasar t La función datepicker es un argumento adicional que especifica un objeto o selector que indica qué elemento debe desencadenar la muestra.
Por ejemplo, me gustaría ser capaz de hacer esto:
$('.datepicker').datepicker({
showOn:'none',
trigger:'.datepicker-trigger'
});
Sé cómo extender jQuery para agregar métodos y crear plugins, pero no estoy seguro de cómo (o si se trata de posible) para modificar los argumentos permitidos en una función existente.
¿Alguien sabe cómo podría ampliar $.datepicker
para lograr lo que estoy buscando hacer o al menos apuntarme en la dirección correcta? Cualquier ayuda sería muy apreciada.
Gracias Andrew, ¡excelente respuesta! Me alegro de que hayas demostrado ambos métodos. –
@PhilipWalton: ¡No hay problema! –
@AndrewWhitaker: ¿se puede extender el datepicker por medio de '$ .widget', incluso si datepicker en 1.8 no usa la fábrica de widgets? Esta [respuesta SO] (http://stackoverflow.com/questions/2526592/how-to-subclass-a-specific-jqueryui-widget-method) parece decir que no. – superjos