J'essaie de sélectionner une plage de dates à l'aide du sélecteur de date de l'interface utilisateur.
dans le champ "De/vers", les personnes ne doivent pas pouvoir afficher ou sélectionner des dates antérieures à aujourd'hui.
Ceci est mon code:
$(function() {
var dates = $( "#from, #to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 1,
onSelect: function( selectedDate ) {
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", option, date );
}
});
});
Quelqu'un peut-il me dire comment désactiver les dates antérieures à la date actuelle?.
Vous devez créer un nouvel objet de date et le définir comme minDate
lorsque vous initialisez les sélecteurs de date.
<label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>
var dateToday = new Date();
var dates = $("#from, #to").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
minDate: dateToday,
onSelect: function(selectedDate) {
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", option, date);
}
});
Modifier - à partir de votre commentaire maintenant, il fonctionne comme prévu http://jsfiddle.net/nicolapeluchetti/dAyzq/1/
Déclarez la variable dateToday et utilisez la fonction Date () pour la définir. Utilisez ensuite cette variable pour l'attribuer à minDate, paramètre de datepicker.
var dateToday = new Date();
$(function() {
$( "#datepicker" ).datepicker({
numberOfMonths: 3,
showButtonPanel: true,
minDate: dateToday
});
});
C'est ça ... La réponse ci-dessus était vraiment utile ... Continuez comme ça les gars ..
$('#datepicker-dep').datepicker({
minDate: 0
});
minDate:0
fonctionne pour moi.
Utilisez l'option "minDate" pour limiter la date autorisée la plus ancienne. La valeur "0" signifie aujourd'hui (0 jours à compter d'aujourd'hui):
$(document).ready(function () {
$("#txtdate").datepicker({
minDate: 0,
// ...
});
});
Documents ici: http://api.jqueryui.com/datepicker/#option-minDate
Juste pour ajouter à ceci:
Si vous devez également empêcher l'utilisateur de taper manuellement une date passée, cette solution est envisageable. C'est ce que nous avons fini par faire (d'après la réponse de @Nicola Peluchetti)
var dateToday = new Date();
$("#myDatePickerInput").change(function () {
var updatedDate = $(this).val();
var instance = $(this).data("datepicker");
var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, updatedDate, instance.settings);
if (date < dateToday) {
$(this).datepicker("setDate", dateToday);
}
});
Cela permet de changer la valeur à la date du jour si l'utilisateur tape manuellement une date dans le passé.
C'est un moyen facile de faire ça
$('#datepicker').datepicker('setStartDate', new Date());
nous pouvons aussi désactiver les jours futurs
$('#datepicker').datepicker('setEndDate', new Date());
Démo en direct , essayez ceci,
$('#from').datepicker(
{
minDate: 0,
beforeShow: function() {
$(this).datepicker('option', 'maxDate', $('#to').val());
}
});
$('#to').datepicker(
{
defaultDate: "+1w",
beforeShow: function() {
$(this).datepicker('option', 'minDate', $('#from').val());
if ($('#from').val() === '') $(this).datepicker('option', 'minDate', 0);
}
});
remplacez simplement votre code:
ancien code:
$("#dateSelect").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy-mm-dd'
});
nouveau code:
$("#dateSelect").datepicker({
showOtherMonths: true,
selectOtherMonths: true,
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy-mm-dd',
minDate: 0
});
documentation de l'API jQuery - datepicker
La date minimum sélectionnable. Lorsqu'il est réglé sur null
, il n'y a pas de minimum.
Plusieurs types supportés:
Date: Un objet de date contenant la date minimale.
Nombre: Nombre de jours à compter de ce jour. Par exemple, 2
représente two days
à partir d’aujourd’hui et -1
représente yesterday
.
Chaîne: Chaîne au format défini par l'option dateFormat
ou une date relative.
Les dates relatives doivent contenir des paires de valeur et de période; les périodes valides sont y
pour years
, m
pour months
, w
pour weeks
et d
pour days
. Par exemple, +1m +7d
représente one month and seven days
à partir de today
.
Afin de ne pas afficher les dates précédentes autres que aujourd'hui
$('#datepicker').datepicker({minDate: 0});
définit l'attribut startDate de datepicker, cela fonctionne, le code de travail est ci-dessous
$(function(){
$('#datepicker').datepicker({
startDate: '-0m'
//endDate: '+2d'
}).on('changeDate', function(ev){
$('#sDate1').text($('#datepicker').data('date'));
$('#datepicker').datepicker('hide');
});
})
L'attribut "mindate" doit être utilisé pour désactiver les dates passées dans jquery datepicker.
minDate: new Date () ou minDate: '0' est la clé pour cela.
Ex:
$(function() {
$( "#datepicker" ).datepicker({minDate: new Date()});
});
OR
$(function() {
$( "#datepicker" ).datepicker({minDate: 0});
});
En réglant startDate: new Date()
$('.date-picker').datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 1,
...
startDate: new Date(),
});
vous devez déclarer la date du jour en variables comme celle-ci
$(function() {
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var currentYear = date.getFullYear();
$('#datepicker').datepicker({
minDate: new Date(currentYear, currentMonth, currentDate)
});
})
$( "#date" ).datetimepicker({startDate:new Date()}).datetimepicker('update', new Date());
new Date()
: la fonction récupère la date d'aujourd'hui la date précédente sont verrouillées. 100% de travail
J'ai créé une fonction pour désactiver la date précédente, désactiver les week-ends flexibles (comme samedi et dimanche)
Nous utilisons la méthode beforeShowDay du plugin datepicker de jQuery UI.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var NotBeforeToday = function(date) {
var now = new Date(); //this gets the current date and time
if (date.getFullYear() == now.getFullYear() && date.getMonth() == now.getMonth() && date.getDate() >= now.getDate() && (date.getDay() > 0 && date.getDay() < 6) )
return [true,""];
if (date.getFullYear() >= now.getFullYear() && date.getMonth() > now.getMonth() && (date.getDay() > 0 && date.getDay() < 6))
return [true,""];
if (date.getFullYear() > now.getFullYear() && (date.getDay() > 0 && date.getDay() < 6))
return [true,""];
return [false,""];
}
jQuery("#datepicker").datepicker({
beforeShowDay: NotBeforeToday
});
Nous sommes aujourd'hui le 15 septembre. J'ai désactivé samedi et dimanche.