Voici mon code pour l'instant. Je ne sais pas comment accomplir une date maximale autre que la définition de celle-ci dans la balise d'entrée elle-même. Je veux qu'il soit dynamique donc quelle que soit la date actuelle, le calendrier ne permet qu'une sélection d'un an maximum.
$(function(){ var dtToday = new Date(); var month = dtToday.getMonth() + 1; var day = dtToday.getDate(); var year = dtToday.getFullYear(); if(month < 10) month = '0' + month.toString(); if(day < 10) day = '0' + day.toString(); var maxDate = dtToday + 365; alert(maxDate); $('#txtDate').attr('max', maxDate); });
<input type="date" id="txtDate" />
exemple: aujourd'hui est le 01/10/2019, il ne devrait être autorisé à sélectionner que le 10/1 / 2019-10 / 1/2020 demain l'utilisateur doit être autorisé à sélectionner uniquement du 10/2 / 2019-10 / 2/2020 lien vers le violon
4 Réponses :
Vous ne pouvez pas ajouter à un objet de date comme celui-ci; vous devez d'abord l'obtenir sous forme d'horodatage. Vous pouvez le faire en utilisant Date.now ()
ou, si vous avez besoin de l'objet Date, dtToday.getTime ()
.
Cela vous donne un horodatage en millisecondes, vous devez donc également convertir 365 jours en millisecondes; ce qui signifie que vous voulez y ajouter 365 * 24 * 60 * 60 * 1000
, pas seulement 365.
merci cela a du sens mais pouvez-vous mettre à jour violon s'il vous plaît?
Vous pouvez ajouter des jours ou des millisecondes à une date. Le moyen le plus simple est d'ajouter 1 an, qui tient également compte des années bissextiles (à condition d'accepter les règles ECMAScript pour ajouter une année au 29 février): date.setFullYear (date.getFullYear () + 1) code >.
Ajoutez simplement une année à la date actuelle
var dtToday = new Date(); dtToday.setYear(dtToday.getYear() + 1);
Je ne veux pas non plus avoir la possibilité de sélectionner une date si elle est antérieure à la date actuelle ou plus d'un an après la date actuelle
$(function(){ var dtToday = new Date(); dtToday.setFullYear(dtToday.getFullYear() + 1) let formatted_date = dtToday.getFullYear() + "-" + (dtToday.getMonth() + 1) + "-" + dtToday.getDate() alert(formatted_date); $('#txtDate').attr('max', formatted_date); });
mais comment puis-je interdire la sélection d'une date dépassant 1 an à partir de la date actuelle?
Il suffit de soustraire 1 au lieu d'ajouter et de définir l'attribut min: comme ceci
@Abigail Si vous voulez interdire les dates passées, définissez min = date actuelle
Mais ne serait-ce pas une date minimale statique? Je veux qu'il se mette à jour dynamiquement au fil des jours
Les réponses basées uniquement sur le code sont considérées comme de mauvaise qualité: @James Dullat - assurez-vous de fournir une explication sur ce que fait votre code et comment il résout le problème.
Merci @ help-info.de de me l'avoir fait savoir
La définition des valeurs minimale et maximale pour une entrée de date basée sur la date du jour peut être effectuée lorsque la page se charge:
<input type="date" id="i0">
// Formt date as YYYY-MM-DD function formatISOLocal(d) { let z = n => ('0' + n).slice(-2); return d.getFullYear()+'-'+z(d.getMonth()+1) + '-' + z(d.getDate()); } window.onload = function() { let inp = document.querySelector('#i0'); let d = new Date(); inp.min = formatISOLocal(d); inp.defaultValue = inp.min; d.setFullYear(d.getFullYear() + 1); inp.max = formatISOLocal(d); // Debug console.log(inp.outerHTML); }
Si l'agent utilisateur ne prend pas en charge la date de type d'entrée, cela définira toujours les valeurs min / max / par défaut, mais vous devrez gérer vous-même les valeurs hors limites.
p>
hey existe-t-il un moyen d'utiliser ce script pour plusieurs champs de saisie de type date? jsfiddle.net/eLp8n9d6/5
Oui. Si vous avez une autre question, postez-la comme question. ;-)
Copie possible de Restreindre les dates futures dans la saisie de date HTML 5
@ShayaUlman cela ne semble pas être un doublon. La question concerne la définition d'une date de fin dynamique
@ControlAltDel oui exactement. Je souhaite uniquement autoriser une sélection de date à partir de la date actuelle + 1 an à partir du jour actuel
Voilà: jsfiddle.net/khrismuc/qf32ync0 (c'est une dupe de cette question btw, mais la réponse acceptée n'utilise pas les bonnes pratiques pour créer la chaîne
max
)@ControlAltDel, la réponse acceptée là-bas semble répondre à cette question, qu'en est-il?
oui c'est parfait, mais comment puis-je interdire toutes les dates commençant avant la date actuelle?
@Abigail vient de définir minDate avec le jour, le mois et l'année de la nouvelle date ()
@ShayaUlman Oui, cela couvre la partie de la date maximale