Bootstrap datepicker ocultar después de la selección


97

¿Cómo oculto el calendario después de seleccionar una fecha? ¿Existe una función específica que pueda utilizar? Mi código a continuación:

$('#dp1').datepicker({
    format: 'mm-dd-yyyy',
    startDate: '-15d',
    autoclose: true,
    endDate: '+0d' // there's no convenient "right now" notation yet
});

Cualquier ayuda sería apreciada.


6
¿Por qué no es este el comportamiento predeterminado de la biblioteca?
Deportes

Respuestas:


156

Puede usar el evento changedate()para realizar un seguimiento de cuándo se cambia la fecha junto con el datepicker('hide')método para ocultar datepickerdespués de realizar la selección:

$('yourpickerid').on('changeDate', function(ev){
    $(this).datepicker('hide');
});

Manifestación

ACTUALIZAR

Este fue el error con autoclose: true. Este error se corrigió en el último maestro. VER EL COMMIT. Obtenga el último código deGitHub


7
Recomendaría verificar adicionalmente si el modo de vista actual es 'días': if (ev.viewMode === 'days') {$(this).datepicker('hide');}ya que probablemente no desee ocultar el selector de fecha después de seleccionar un mes o un año}
turan

1
Parece que el cierre automático está configurado en falso por defecto ... ¡ $(".date").datepicker({... autoclose: true, ... });funciona bien!
Dani

45

Si es de alguna ayuda para alguien, la versión 2.0 del selector de fechas de arranque ya no funciona con la respuesta aceptada.

Así es como lo hice funcionar en el mío:

$('yourpickerid').datepicker({
    format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
    $(this).datepicker('hide');
});

Ver http://bootstrap-datepicker.readthedocs.org/en/latest/events.html#changedate


¿Hay una versión 2? Veo v1.6.4 como la última versión en Github
garryp

Utilice el cierre automático (consulte la respuesta de @ Salim o la respuesta aceptada actualizada) en lugar de manejar el evento manualmente. Si oculta el selector de fecha cuando se cambia la fecha, intentar escribir la fecha puede provocar un comportamiento no deseado.
Desequilibrado

35
$('#input').datepicker({autoclose:true});

4
Esta es la respuesta perfecta. Esta debería ser la respuesta aprobada.
Sarower Jahan

3

Si está buscando anular el comportamiento del calendario en general, globalmente, intente editar la función Datepicker (en mi ejemplo era la línea 82),

de

    this.autoclose = false;

a

    this.autoclose = true;

Funcionó bien para mí, ya que quería que todas mis instancias de calendario se comportaran igual.


2
No es necesario cambiar las propiedades predeterminadas en la biblioteca js. Puede pasarlo como una propiedad del objeto a la función cuando lo llame. Ejemplo: $ ('# dob'). Datepicker ({formato: 'dd / mm / aaaa', autoclose: true});
Zeeshan

3

El problema se puede detener, bloqueando el evento hide para el elemento de entrada mediante esta línea:

var your_options = { ... };
$('.datetimepicker').datetimepicker(your_options).on('hide', function (e) {
    e.preventDefault();
    e.stopPropagation();
});


Gracias amigo ! Me estaba enojando porque la entrada se ocultó después de la selección de la fecha, y esto resolvió mi problema. Salud !
spacebiker

3
  1. Simplemente abra el bootstrap-datepicker.js
  2. encontrar : var defaults = $.fn.datepicker.defaults
  3. conjunto autoclose: true

Guarde y actualice su proyecto y esto debería funcionar.


2

En bootstrap 4 use "autoHide: true"

$('#datepicker1').datepicker({
    autoHide: true,
    format: 'mm-yyyy',
    endDate: new Date()
});

Buena respuesta Ankit
Shashank Singh

1

Cerrar datetimepicker cuando seleccione la fecha (datetimepicker muestra la fecha con la hora)

$('.datepicker').datepicker({
    autoclose: true,
    closeOnDateSelect: true
}); 

1
$('yourpickerid').datetimepicker({
           pickTime: false
}).on('changeDate', function (e) {
           $(this).datetimepicker('hide');
});

0

Tengo una solución perfecta:

$('#Date_of_Birth').datepicker().on('changeDate', function (e) {
    if(e.viewMode === 'days')
        $(this).blur();
});

0
$('.datepicker').datepicker({
    autoclose: true
}); 

Otra respuesta a esta pregunta es exactamente la misma que la suya. OP también tiene esto autoclose: trueen su código de ejemplo.
93196.93

0

Cambié a datetimepicker y el formato a 'DD / MM / YYYY'

$("id").datetimepicker({
    format: 'DD/MM/YYYY',
}).on('changeDate', function() {
    $('.datepicker').hide();
});

0

Al menos en la versión 2.2.3 que estoy usando, debes usar en autoCloselugar de autoclose. El caso de la carta importa.


0

Puede cambiar el código fuente, bootstrap-datepicker.js . Agregar this.hide();como ne

  if (this.viewMode !== 0) {
    this.date = new Date(this.viewDate);
    this.element.trigger({
        type: 'changeDate',
        date: this.date,
        viewMode: DPGlobal.modes[this.viewMode].clsName
    });
    this.hide();//here
 }

0

Tengo un problema con el reloj que aún se muestra incluso si escribí el formato: 'AAAA-MM-DD' ,

Tuve que configurar pickTime: falsey después del cambio-> ocultar tuve que enfocar-> mostrar

$('#VBS_RequiredDeliveryDate').datetimepicker({
  format: 'YYYY-MM-DD',
  pickTime: false
});

$('#VBS_RequiredDeliveryDate').on('change', function(){
    $('.datepicker').hide();
});

$('#VBS_RequiredDeliveryDate').on('focus', function(){
    $('.datepicker').show();
});

0

Para selector de fecha y hora

$('yourpickerid').datetimepicker({
        format: 'dd/mm/yyyy',
}).on('changeDate', function(e){
        $(this).datetimepicker('hide');
});

0

Use esto para datetimepicker, funciona bien

$('#Date').data("DateTimePicker").hide();

0

No he visto esto mencionado, pero esto es lo que lo solucionó:

switchOnClick: true
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.