¿Cómo relleno previamente un cuadro de texto jQuery Datepicker con la fecha de hoy?

238

Tengo un calendario jQuery Datepicker muy simple:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
});

y por supuesto en el HTML ...

<input type="text" size="10" value="" id="date_pretty"/>

La fecha de hoy está bien resaltada para el usuario cuando abre el calendario, pero ¿cómo hago para que jQuery rellene previamente el cuadro de texto con la fecha de hoy en la carga de la página, sin que el usuario haga nada? El 99% de las veces, la fecha predeterminada de hoy será lo que quieran.

Marcus
fuente
77
La respuesta más popular es mejor que la respuesta aceptada. Es mejor cambiar la respuesta aceptada.
ahmadali shafiee
mi pregunta relacionada stackoverflow.com/questions/25602649/…
Adrien Be
1
@ahmadalishafiee (y todos los demás). La solución actualmente aceptada se aceptó el 2015-05-07.
Teepeemm

Respuestas:

569

Actualización: hay informes de que esto ya no funciona en Chrome.

Esto es conciso y hace el trabajo (obsoleto):

$(".date-pick").datepicker('setDate', new Date());

Esto es menos conciso, el uso de encadenamiento le permite trabajar en Chrome (2019-06-04):

$(".date-pick").datepicker().datepicker('setDate', new Date());
CiscoIPPhone
fuente
3
Esta solución es elegante
oculta el
2
Este es el que realmente funcionó para mí y no la solución aceptada. Gracias
Mehdiway
77
Esto no funcionará, primero debe llamar a $ (". Date-pick"). Datepicker (); y luego $ (". date-pick"). datepicker ('setDate', new Date ());
Misha Akopov
99
Ya no funciona en Chrome después de la reciente actualización del navegador
Max Flex del
3
Trabajos. Me estoy poniendo $(".date-pick").datepicker().datepicker('setDate', new Date()); tho
seebiscuit
221

Primero debe llamar a datepicker ()> luego usar 'setDate' para obtener la fecha actual.

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

O encadene su llamada al método setDate después de la inicialización de su selector de fecha, como se señala en un comentario sobre esta respuesta

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());

Será NO trabajar con sólo

$(".date-pick").datepicker("setDate", new Date());

NOTA : los parámetros aceptables de setDate se describen aquí

Ravi Ram
fuente
3
Usando jQueryUI 1.8, encontré que esta solución es la única forma (sensata) de lograr esto.
brianz
13
$ (". selector"). datepicker (). datepicker ("setDate", new Date ()); funcionará y no hace que jQuery busque el DOM dos veces.
abc123
1
Excelente, la respuesta aceptada dice solo $ (". Date-pick"). Datepicker ("setDate", new Date ()); y no funciona sin la primera llamada $ (". date-pick"). datepicker (); tu respuesta es mucho mejor
Misha Akopov
72
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

parecía funcionar, pero podría haber una mejor manera de salir ...

lucas
fuente
Esto funciona bastante bien, excepto por dos cosas: 1) Tenía la esperanza de usar el método jQuery para obtener la fecha actual, pero tal vez no importa. 2) ¡esta solución produce un valor exactamente un mes antes de la fecha de hoy!
Marcus
2
OH - tienes razon! échale un vistazo - w3schools.com/jsref/jsref_obj_date.asp - el mes es 0-11 - tendrás que agregar 1 .. curiosamente, getDate es 1-31, pero getMonth es 0-11 ..
lucas
3
Hay una manera más fácil ... mira mi publicación a continuación.
Ravi Ram
Esta solución permite mostrar texto directamente y establecer la fecha simultáneamente, mientras que la solución CiscoIPPhone necesita otro paso para mostrar el valor sin abrir el selector.
Afshar Mohebbi
44
Para setDatetambién puede utilizar la notación relativa habitual de datepicker, por ejemplo, para obtener el día siguiente simplemente escriba .datepicker('setDate', '+1d').
kosii
59

El setDate()método establece la fecha y actualiza el control asociado. Aquí es cómo:

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");

Manifestación

Como se menciona en la documentación, setDate()acepta felizmente el objeto, el número o una cadena de fecha de JavaScript:

La nueva fecha puede ser un objeto Fecha o una cadena en el formato de fecha actual (por ejemplo, '01 / 26/2009 '), varios días a partir de hoy (por ejemplo, +7) o una cadena de valores y períodos (' y 'para años, 'm' para meses, 'w' para semanas, 'd' para días, por ejemplo, '+ 1m + 7d'), o nulo para borrar la fecha seleccionada.

En caso de que se pregunte, establecer la defaultDatepropiedad en el constructor no actualiza el control asociado.

Salman A
fuente
1
¿Por qué está en su demo funciona? Cuando copio este código en mi sitio, el cuadro de diálogo sigue apareciendo cuando se carga la página.
chobo2
1
Esto funcionó para mí: la respuesta aceptada y otras opciones anteriores no.
lydiat
Esta es una solución mucho, mucho mejor que cualquiera de las anteriores.
adamj
La mejor respuesta para esta pregunta en este momento, aunque necesitaba que el formato de fecha fuera "mm-dd-aa" para que coincida con el selector de fecha.
John81
26

Establecido para hoy :

$('#date_pretty').datepicker('setDate', '+0');

Establecido para ayer :

$('#date_pretty').datepicker('setDate', '-1');

Y así sucesivamente con cualquier número de días antes o después de la fecha de hoy .

Ver jQuery UI ›Métodos› setDate .

KirilleXXI
fuente
1
Grande, como otros han mencionado, debe haber llamado selector de fechas () una vez que ya es así,$(".date-pick").datepicker("setDate", '+0');
jwbensley
Esto también funcionó como deseaba, ya que mi dateFormat debe coincidir con el formato de fecha de MySQL (aa-mm-dd). Este setDate agrega cero relleno al mes y al día.
jjohn
9

La solucion es:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var prettyDate = month + '/' + myDate.getDate() + '/' + myDate.getFullYear();
    $("#date_pretty").val(prettyDate);
});

Gracias grayghost!

Marcus
fuente
7

Este me funcionó.

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());
Celestz
fuente
6

Este código asegurará usar el formato de su selector de fechas:

$('#date-selector').datepicker('setDate', new Date());

No es necesario volver a aplicar el formato, utiliza el selector de fecha predefinido por usted en la inicialización del selector de fecha (si lo ha asignado);)

Jeff Girard
fuente
5

El código de David K ​​Egghead funcionó perfectamente, ¡gracias!

$(".date-pick").datepicker(); 
$(".date-pick").datepicker("setDate", new Date()); 

También logré recortarlo un poco y también funcionó:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 
Gary Medina
fuente
4
$('input[name*="date"]').datepicker({
        dateFormat: 'dd-mm-yy',
        changeMonth: true,
        changeYear: true,
        beforeShow: function(input, instance) { 
            $(input).datepicker('setDate', new Date());
        }
    });
quocnguyen
fuente
2

Para establecer el selector de fecha en un cierto tiempo predeterminado (la fecha actual en mi caso) al cargar, Y luego tener la opción de elegir otra fecha, la sintaxis es:

    $(function() { 
        // initialize the datapicker
        $("#date").datepicker();

        // set the time
        var currentDate = new Date();
        $("#date").datepicker("setDate",currentDate);

    //  set the options for the button  
        $("#date").datepicker("option",{
            dateFormat: 'dd/mm',
            showOn: "button",
          // whatever option Or event you want 
        });
  });
maozx
fuente
esta solución me funcionó en Chrome, otras que figuran aquí no lo hicieron
Mike Volmar
2

Para rellenar previamente la fecha, primero debe inicializar datepicker, luego pasar el valor del parámetro setDate.

$("#date_pretty").datepicker().datepicker("setDate", new Date());
Nadir
fuente
1

Solo pensé en agregar mis dos centavos. El selector se está utilizando en un formulario de agregar / actualizar, por lo que necesitaba mostrar la fecha proveniente de la base de datos si edita un registro existente, o mostrar la fecha de hoy si no. A continuación está funcionando bien para mí:

    $( "#datepicker" ).datepicker();
    <?php if (!empty($oneEVENT['start_ts'])): ?>
       $( "#datepicker" ).datepicker( "setDate", "<?php echo $startDATE; ?>" );
    <? else: ?>
       $("#datepicker").datepicker('setDate', new Date());   
    <?php endif; ?>
  });
Les Mizzell
fuente
1

Tienes 2 opciones:

OPCIÓN A) Marca como "activo" en su calendario, solo cuando hace clic en la entrada.

Js :

$('input.datepicker').datepicker(
                        {   
                            changeMonth: false,
                            changeYear: false,
                            beforeShow: function(input, instance) { 
                                $(input).datepicker('setDate', new Date());
                            }
                        }                         
                     );

Css :

div.ui-datepicker table.ui-datepicker-calendar .ui-state-active,
        div.ui-datepicker table.ui-datepicker-calendar .ui-widget-content .ui-state-active  {
            background: #1ABC9C;
            border-radius: 50%;
            color: #fff;
            cursor: pointer;
            display: inline-block;
            width: 24px; height: 24px;
        }​

OPCIÓN B) Entrada por defecto con hoy. Primero debe completar el selector de fechas.

$ ("input.datepicker"). datepicker (). datepicker ("setDate", new Date ());
Vero O
fuente
1
la opción A es buena porque el selector de fecha puede permanecer en blanco hasta que se seleccione una fecha en la que el valor predeterminado es la fecha actual
waxingsatirical
0
var prettyDate = $.datepicker.formatDate('dd-M-yy', new Date());
alert(prettyDate);

Asigne el prettyDate al control necesario.

usuario de gmail
fuente
0

Prueba esto

$(this).datepicker("destroy").datepicker({
            changeMonth: false, changeYear: false,defaultDate:new Date(), dateFormat: "dd-mm-yy",  showOn: "focus", yearRange: "-5:+10"
        }).focus();
thejustv
fuente
0

Esto funciona mejor para mí, ya que a veces tengo problemas para llamar, .datepicker('setDate', new Date());ya que no funciona si tengo el selector de fecha ya configurado con parámetros.

$("#myDateText").val(moment(new Date()).format('DD/MM/YYYY'));
Alpha2k
fuente
0

Utilizar este:

$(".datepicker").datepicker({ dateFormat: 'dd-M-yy' }).datepicker('setDate', new Date());

Para obtener la fecha en formato, por ejemplo: 10-Oct-2019, que será más comprensible para los usuarios.

nikhil
fuente
-1
$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

Fuente: http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerDefaultToday.html


fuente
Mi navegador no reconoció la función asString (). Lo hice así: $ (". Date-pick"). Datepicker ('setDate', new Date ());
CiscoIPPhone
1
Creo que asString () debería ser toString ().
rg88
1
DatePicker de Kevin Luck y DatePicker de la interfaz de usuario de Jquery son dos selectores de fechas muy diferentes.
Craig Hooghiem
@gamerzfuse jQuery UI datepicker se basa en el de Kevin Luck.
Mathias Bynens