2010-02-04 18 views
15

estoy usando selector de fechas UI de jQuery: http://jqueryui.com/demos/datepicker/jQuery UI DatePicker: Hacer un selector de fechas eslabón de gatillo

implementado aquí:

http://www.clients.eirestudio.net/old/

Quiero usar un enlace como el gatillo, pero no puedo haz que funcione

Aquí está mi código:

// JQuery UI 
$("#datepicker").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     maxDate: '0m 0d', 
     minDate: new Date(2000, 1 - 1, 1), 
     dateFormat: 'dd-mm-yy' 
}); 

<p class="clearfix hidden"> 
    <input id="" class="input float datepicker" type="input" name="" value="" /> 
    <a class="calendar ui-icon ui-icon-calendar">Date</a> 

    <span class="mid-info">To</span> 
    <input id="" class="input datepicker" type="input" name="" value="" /> 
    <a class="calendar" href="#">Date</a> 
</p> 

¿Alguna idea?

Respuesta

6

Esto podría ayudar a alguien más.

Terminé haciendo que funcionara con JQuery UI.

código de abajo:

$(".date-pick").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     maxDate: '0m 0d', 
     minDate: new Date(2000, 1 - 1, 1), 
     dateFormat: 'dd-mm-yy', 
     showOn: 'button', 
     buttonImage: 'http://www.example.com/elements/images/calendar.png', 
     buttonImageOnly: true 
     }); 

y he cambiado el ID del selector de fecha para la clase fecha de captura

+0

¿Con qué HTML terminaste? ¿También agregó la clase de selección de fecha a los enlaces? Tengo problemas con esto en mi extremo. – Steve

+1

Esto no responde la pregunta en absoluto jajaja. Esto no está usando un enlace para activar el calendario, solo está usando el botón Imagen para abrirlo. Aún requiere un campo de entrada que puede o no tener ... – nzifnab

0

De jqueryui, parece que se debe añadir showOn y tal vez (no sé si se requiere) buttonImage:

$("#datepicker").datepicker({ 
    changeMonth: true, 
    changeYear: true, 
    maxDate: '0m 0d', 
    minDate: new Date(2000, 1 - 1, 1), 
    dateFormat: 'dd-mm-yy', 
    showOn: 'button', 
    buttonImage: 'images/calendar.gif', // adapt this to your image 
    buttonImageOnly: true 
}); 
+0

Gracias por la respuesta. Desafortunadamente lo intenté y parece que no funciona también. –

+0

De alguna manera, olvidé la función 'datepicker()' antes, y la propiedad 'buttonImage' probablemente debe adaptarse, como sugiere tu propia respuesta. Perdón por la inexactitud. –

6

Trate de usar:

<a href="javascript:void(0);" onclick="$.datepicker._showDatepicker($('#inputID')[0]);">Text here</a> 
    <input type="hidden" id="inputID"/> 
    ... 
    <script type="text/javascript"> 
     $(document).ready(
     function() 
     { 
      $('#inputID').datepicker(); 
     } 
    ); 
    </script> 
+0

La solución más simple con el código y los hijinks menos agregados. ¡Gracias! – nicholeous

+0

Sí, me gusta este :) +1 – entiendoNull

27

Se podría hacer algo como lo hice en this fiddle

HTML:

<a href="#" id="toggleDP">Toggle</a> 

JS:

var $dp = $("<input type='text' />").hide().datepicker({ 
    onSelect: function(dateText, inst) { 
     $("body").append("<div>Selected "+dateText+"</div>"); 
    } 
}).appendTo('body'); 

$("#toggleDP").button().click(function(e) { 
    if ($dp.datepicker('widget').is(':hidden')) { 
     $dp.show().datepicker('show').hide(); 
     $dp.datepicker("widget").position({ 
      my: "left top", 
      at: "right top", 
      of: this 
     }); 
    } else { 
     $dp.hide(); 
    } 

    //e.preventDefault(); 
}); 
+0

Gracias, hasta ahora la mejor solución que he encontrado :) – Siim

+3

Esta solución no parece funcionar en Chrome 29 con jQuery 1.9 – kibibu

+0

Funciona para mí en Chrome, el único problema Lo que tengo es que me desplaza hacia abajo, así que lo edité para agregar el marcador de fecha solo una vez cuando hago clic en el enlace y lo anexo al elemento primario del elemento en el que se hace clic. –

18

Acabo de resolver esto muy fácilmente en mi aplicación - si usted tiene su planificador de evento abierto con un campo de texto, puede utilizar esta solución también. Agregué un enlace $('#date_field').focus() al ícono. Haga clic en el ícono, el campo de texto se enfoca y eso activa el selector de fecha para abrirse. Voila.

+1

me gusta esta solución, rápida y fácil. – Winterain

+1

¡Gracias! Esta técnica también es útil para crear un botón simple que abre el marcador de fecha al hacer clic (sin el botón lateral adicional que se crea si usa el botón 'onShow:" "' parámetro datepicker), así: '' donde en otro lugar usted hace el '' $ ("# date"). datepicker() 'normal. – Ghopper21

+1

Una idea tan simple ... ¡gracias! –

0

Con inline datepicker es bastante más fácil hacer esto. Verifique mi JSFiddle.

HTML

<a href="#" class="datepicker">Pick a date</a> 

JS

var dpToggler = $('a.datepicker').button(), 
    dp = $("<div />").css('position', 'absolute').hide().datepicker().appendTo(dpToggler); 

dpToggler.on('click', function(e) { 
    e.preventDefault(); 
    if (dp.is(':hidden')) { 
    dp.show().position({ 
     my: 'left top', 
     at: 'right top', 
     of: this 
    }); 
    } else { 
    dp.hide(); 
    } 
}); 
4

Basado en respuesta @camilokawerin, lo hice y me parece la solución más limpia y easieast:

HTML:

<a href="#" id="selec">Click</a> <div id="datepicker" style="display:none"></div> 

JS:

$("#datepicker").datepicker(); 
$('#selec').click(function(){ 
    $('#datepicker').toggle(); 
}); 
+0

Parece bueno, pero ¿cómo se obtiene la fecha seleccionada? – tiho

+1

@tiho Lo recojo en el método 'onSelect' ... Todo está en los documentos http://api.jqueryui.com/datepicker/#option-onSelect – Pere

Cuestiones relacionadas