2009-11-23 14 views
73

¿Cómo desactivo las fechas pasadas en jQuery datepicker? Busqué opciones pero no encuentro nada que indique la capacidad de desactivar fechas pasadas.jQuery datepicker para evitar la fecha pasada

ACTUALIZACIÓN: Gracias yall por la respuesta rápida. Lo intenté sin suerte. Los días aún no estaban atenuados como esperaba y todavía aceptan la fecha pasada seleccionada.

yo probamos este:

$('#datepicker').datepicker({ minDate: '0' }); 

no funciona.

yo probamos este:

$('#datepicker').datepicker({ minDate: new Date() }); 

Aún no funciona bien.

Muestra el widget de calendario muy bien. Simplemente no se atenuará o impedirá la entrada de días pasados. He intentado minDate y maxDate en el pasado sin suerte, así que pensé que no debían ser ellos.

Respuesta

33

Solo necesita especificar una fecha mínima: establecerla en 0 significa que la fecha mínima es 0 días a partir de hoy, es decir, hoy. En su lugar, podría pasar la cadena '0d' (la unidad predeterminada son los días).

$(function() { 
    $('#date').datepicker({ minDate: 0 }); 
}); 
0

Pruebe la configuración startDate a la fecha actual. Por ejemplo:

$('.date-pick').datePicker({startDate:'01/01/1996'}); 
+0

Parece que es para el selector de fechas de Kevin Luck, no para el estándar JQuery – salonMonsters

135

Prueba esto:

$("#datepicker").datepicker({ minDate: 0 }); 

Retire las cotizaciones de 0.

+0

¡Funcionó muy bien! –

+0

Esta debería ser la respuesta aceptada. – BWDesign

+4

@BWDesign Respondió un año y medio después que yo;) –

9

Esto funciona:

$("#datepicker").datepicker({ minDate: +0 }); 
+0

¡Esta solución funciona de verdad! – Michiel

2

estoy usando siguiente código para dar formato a la fecha y mostrar 2 meses en el calendario ...

<script> 
$(function() { 

    var dates = $("#from, #to").datepicker({ 

     showOn: "button", 
     buttonImage: "imgs/calendar-month.png", 
     buttonImageOnly: true,       
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2, 

     onSelect: function(selectedDate) { 




      $(".selector").datepicker({ defaultDate: +7 }); 
      var option = this.id == "from" ? "minDate" : "maxDate", 


       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, 
        selectedDate, instance.settings); 

      dates.not(this).datepicker("option", "dateFormat", 'yy-mm-dd'); 


     } 
    }); 
}); 

</script> 

El problema es que no estoy seguro de cómo restringir las fechas anteriores selección.

23

Quite las comillas que rodean 0 y funcionará.

Trabajo Fragmento de código:

// set minDate to 0 for today's date 
 
$('#datepicker').datepicker({ minDate: 0 });
body { 
 
    font-size: 12px; /* just so that it doesn't default to 16px (which is kinda huge) */ 
 
}
<!-- load jQuery and jQuery UI --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
<!-- load jQuery UI CSS theme --> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> 
 

 
<!-- the datepicker input --> 
 
<input type='text' id='datepicker' placeholder='Select date' />

+1

¿Alguna explicación sobre por qué se necesita coma? Puedo eliminarlo y todo funciona aún correctamente. ¿Hay algún navegador que requiera una coma para un único objeto de propiedad? – schickm

+0

Solo necesita comas si usa varias opciones, p. '$ ('# datepicker'). Datepicker ({minDate: 0, maxDate:" + 1M + 10D ", dateFormat: 'aa-mm-dd'});' No necesita una coma después de la última opción – Tanvir

+1

está enviando un objeto al método. una coma en el último valor es incorrecta. –

1

Asegúrese de poner varias propiedades en la misma línea (ya que sólo mostró 1 línea de código, que puede haber tenido el mismo problema Yo si).

El mío establecería la fecha predeterminada, pero no gris las fechas antiguas.Esto no funciona:

$('#date_end').datepicker({ defaultDate: +31 }) 
$('#date_end').datepicker({ minDate: 1 }) 

Esto hace las dos cosas:

$('#date_end').datepicker({ defaultDate: +31, minDate: 1 }) 

1 y 1 funcionan de la misma (o 0 y 0 en su caso).

Me: Windows 7 x64, rieles 3.2.3, Ruby 1.9.3

22

Si se trata de un selector de fechas previamente consolidado a continuación, establecer

$("#datepicker").datepicker({ minDate: 0 }); 

no va a funcionar. Esa sintaxis es aplicable solo cuando está creando el widget.

para establecer la fecha min para un selector de fechas límite utilice la siguiente:

$("#datePicker").datepicker("option", "minDate", 0); 
+1

gracias por esa solución previamente encuadernada – stackoverfloweth

+1

Gracias.Perdí mucho tiempo para encontrar esta solución y esto resolvió mi problema. – Rushan

1
var givenStartDate = $('#startDate').val(); 
     alert('START DATE'+givenStartDate); 
     var givenEndDate = $('#endDate').val(); 
     alert('END DATE'+givenEndDate); 
     var date = new Date(); 
     var month = date.getMonth()+1; 
     var day = date.getDate(); 
     var currentDate = date.getFullYear() + '-' + 
      (month<10 ? '0' : '') + month + '-' + 
      (day<10 ? '0' : '') + day; 
     if(givenStartDate < currentDate || givenEndDate < currentDate) 
     { 
     $("#updateButton").attr("disabled","disabled"); 
     } 
     if(givenStartDate < currentDate && givenEndDate > currentDate) 
      { 
      $("#updateButton").attr("enabled","enabled"); 
      } 
     if(givenStartDate > currentDate || givenEndDate > currentDate) { 
     $("#updateButton").attr("enabled","enabled"); 
     } 

probar esto. Si hay algún error, por favor corríjanme :) Gracias a todos.

10

Dale cero a la fecha y desabilitará las fechas pasadas.

$("#datepicker").datepicker({ minDate: 0}); 

Live example

read more here

7

// futuro desactivar fechas Fecha

$('#datetimepicker1').datetimepicker({ 
      format: 'DD-MM-YYYY', 
      maxDate: new Date 
     }); 

// pasado desactivar

$('#datetimepicker2').datetimepicker({ 
     format: 'DD-MM-YYYY', 
     minDate: new Date 
    }); 
+0

No estoy seguro de por qué esta respuesta obtuvo un voto negativo, porque su solución funcionó para mí, mientras que la solución aceptada con un '0 'provocó un error de JavaScript. +1 – Sheridan

5

$("#datePicker").datePicker({startDate: new Date() });. Esto funciona para mí

0

he usado el atributo min: min="' + (new Date()).toISOString().substring(0,10) + '"

Aquí está mi código y funcionó.

<input type="date" min="' + (new Date()).toISOString().substring(0,10) + '" id="' + invdateId + '" value="' + d.Invoice.Invoice_Date__c + '"/> 

enter image description here

Cuestiones relacionadas