web-dev-qa-db-fra.com

jQuery / JavaScript: est-ce une date? (Validez si c'est une date)

J'ai un sélecteur de dates, mais je n'ai pas pu trouver un moyen de valider si l'entrée de l'utilisateur est une date ou non ET si elle suit le format requis ( format: aaaa-mm-jj )

Voici mon sélecteur de date:

$("input[name='date']").datepicker({ dateFormat: 'yy-mm-dd', changeMonth: true, changeYear: true, numberOfMonths: 3, showButtonPanel: true});

J'ai regardé cette solution, " Comment valider datepicker pour interdire/rejeter certaines dates? ". Cela semble assez simple, mais il vérifie seulement s'il s'agit d'un week-end. Il ne vérifie pas si l'utilisateur a entré une date, un nombre aléatoire ou une faute de frappe (1231 .... 30-30-2011 ... 30/30/2011 ... 212-565-565 ... etc.) .

Veuillez jouer avec mon violon: http://jsfiddle.net/MDa4A/




Informations supplémentaires (11-10-2011):
(Essayez ces jsFiddles et tapez 0-0-0 ou 0/0/0)

J'ai utilisé vos réponses pour trouver une solution. Cela fonctionne lorsque j'utilise le format "aa-mm-jj" : http://jsfiddle.net/LyEvQ/

MAIS c'est totalement inutile quand j'utilise un format différent (Ej .: "mm/dd/yy") : http: // jsfiddle.net/LyEvQ/1/

J'ai besoin des deux pour travailler. Peux-tu aider s'il te plait

16
Omar
if (Date.parse("some string")) {
   //Valid date
} else {
  //Not a valid date
}
34
Asmor

Quelque chose comme ça devrait fonctionner:

jQuery.validator.addMethod("customDateValidator",
    function(value, element) {
        try { jQuery.datepicker.parseDate("mm/dd/yyyy", value); return true; }
        catch(e) { 
            return false;
        }
    },
    "Please enter a valid date"
);

$("input[name='date']").rules("add", { customDateValidator:true });
10
James Johnson

Utilisez la méthode Date.parse() pour vérifier si une date est valide:

var timestamp = Date.parse($("input[name='date']").val()) 

if (isNaN(timestamp) == false) { 
    var d = new Date(timestamp); 
} 
7
James Hill