2017-10-13 2 views
0

Je les dates en utilisant validais moment.jsIssame et l'état IsAfter ne fonctionne pas dans moment.js

var dobfield = $("#dobfield").val().trim(); 
//... 
formatToApply = "DD/MM/YYYY"; 
//... 
else if(moment(dobfield, formatToApply).isAfter(moment().format(formatToApply))) 
{ 
    swal({ 
     title: "", 
     text: "Date of birth has to be in the past! " 
    }); 
    $("#dobfield").focus(); 
} 
else if(moment(dobfield, formatToApply).isSame(moment().format(formatToApply))) 
{ 
    swal({ 
     title: "", 
     text: "Date of birth cannot be in the present! " 
    }); 
    $("#dobfield").focus(); 
} 

Les deux isSame et isAfter ne parvient pas à valider la date indiquée au format dd/mm/yyyy.

Répondre

0

Je suppose que vous voulez juste comparer juste la date, pas l'heure. Donc, vous devez indiquer que les isSame() et isAfter() fonctions ...

var dobfield = $("#dobfield").val().trim(); 
... 
formatToApply = "DD/MM/YYYY"; 
... 
else if (moment(dobfield,formatToApply).isAfter(moment(),'day')) { 

    swal({ 
     title: "", 
     text: "Date of birth has to be in the past! " 
    }); 
    $("#dobfield").focus(); 
} 
else if (moment(dobfield,formatToApply).isSame(moment(),'day')) { 

    swal({ 
     title: "", 
     text: "Date of birth cannot be in the present! " 
    }); 
    $("#dobfield").focus(); 
} 

Vous avez ici un exemple violon ... https://fiddle.jshell.net/rigobauer/mz9rutuq/

REMARQUE: dobfield format de date doit toujours correspondre au format spécifié dans formatToApply variable. Sinon, moment(dobfield,formatToApply) obtiendra un résultat inattendu.

+0

S'il vous plaît noter que formatToApply varie selon le format de date conservé dans la page des paramètres ... c'est pourquoi j'ai gardé cela comme variable –

+0

cela ne fonctionne pas! Solution donnée par vous – vertika

+0

Mais vous voulez comparer avec le jour en cours, non? Alors isSame et isAfter paramètres ne se soucient pas du format, l'objet accepter un moment. La comparaison est indépendante du format. Vérifiez cet exemple de violon ... https://fiddle.jshell.net/rigobauer/mz9rutuq/ –

-1

Malheureusement, moment.js estAprès et isSame ne fonctionne pas pour ce format de date. il ne fonctionne que pour AAAA-MM-JJ.

Ceci est un bug de moment.js je pourrais dire.

+1

Fonctionne parfaitement avec n'importe quel format ... https://fiddle.jshell.net/rigobauer/mz9rutuq/ –

+1

Non, il n'y a pas de bug dans moment.js, les deux ['isAfter'] (http://momentjs.com/ docs/#/query/is-after /) et ['isSame'] (http://momentjs.com/docs/#/query/is-same/) fonctionnent correctement s'ils sont utilisés correctement. Si l'entrée n'est pas au format "AAAA-MM-JJ", elle peut être analysée en utilisant ['moment (String, String)'] (http://momentjs.com/docs/#/parsing/string-format/). – VincenzoC