J'essaie de valider un champ pour qu'il ne contienne pas de date antérieure à aujourd'hui. J'utilise MomentJS et les fonctions suivantes :
- est une date valide et j'utilise
isValid()
- est le même qu'aujourd'hui ou après et j'utilise
isSameOrAfter()
C'est comme ça que je fais :
$("#btn").click(function(){
const value = moment(new Date($('#field').val()), 'MM/DD/YYYY', true)
console.log(value)
//console.log(value.isValid() && value.isSameOrAfter(moment(new Date(), 'MM/DD/YYYY')))
//console.log(value.isValid() && value.isSameOrAfter(moment()))
console.log(value.isValid() && value.isSameOrAfter(moment(new Date())))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<input type="text" name="field" id="field" />
<button id="btn">Click Me</button>
Je ne suis pas sûr de ce que je pourrais manquer ici, mais comme vous pouvez le voir, cela ne fonctionne pas et j'ai essayé trois façons différentes (commenté sur le snippet ci-dessus).
Une chose que j'ai remarquée est que le moment()
retourne la date au format TimeZone : 2018-08-10T04:00:00.000Z
Est-ce que cela pourrait briser la validation ?
Qu'est-ce que je rate ici ?