CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide JavaScript Debutant

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
03 mai 2020 à 18:45:59

Pour un devoir je dois faire un formulaire d'inscription ou se trouve une date de naissance sauf qu'on a pas le droit d'utiliser le type date dans le input html. Il nous faut utiliser l'objet date de JS.
Je pense donc qu'il faut utiliser Date.Parse(maDate).

function controle(){
            var date = "40/05/2001"
            splitDate = date.split('/')
            var myDate = splitDate[2] + "-" +splitDate[1] + "-" + splitDate[0]
            console.log("Ma date est : " + myDate)
            var d = new Date(myDate)
            var myParse = Date.parse(d)
            console.log(myParse)
            switch(myParse){
                case NaN:
                    console.log("DATE NON VALIDE")
                default:
                    console.log("DATE VALIDE")
            }
        }

Dans mon console.log(myParse), ça m'affiche "NaN" mais quand ça passe dans le switch, ça m'execute le default et non pas le cas NaN.

Comment faire ?

cybevil
cybevil
Niveau 27
03 mai 2020 à 19:19:32

Essaie

case Number.NaN:

Message édité le 03 mai 2020 à 19:20:52 par cybevil
Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
03 mai 2020 à 19:23:33

Le 03 mai 2020 à 19:19:32 cybevil a écrit :
Essaie

case Number.NaN:

Ça ne fonctionne pas non plus.

cybevil
cybevil
Niveau 27
03 mai 2020 à 19:31:31

Effectivement je n'avais pas essayé.

Je n'ai pas trouver comment faire avec un switch mais tu peux utiliser la méthode isNaN dans une condition.


var date = "40/05/2001"
splitDate = date.split('/')
var myDate = splitDate[2] + "-" +splitDate[1] + "-" + splitDate[0]
console.log("Ma date est : " + myDate)
var d = new Date(myDate)
var myParse = Date.parse(d)
console.log(myParse)

if(isNaN(myParse))
    console.log("DATE NON VALIDE")

else
    console.log("DATE VALIDE")

cybevil
cybevil
Niveau 27
03 mai 2020 à 19:33:51

Dans un switch :


var date = "40/05/2001"
splitDate = date.split('/')
var myDate = splitDate[2] + "-" +splitDate[1] + "-" + splitDate[0]
console.log("Ma date est : " + myDate)
var d = new Date(myDate)
var myParse = Date.parse(d)
console.log(myParse)

switch(isNaN(myParse)){
    case true:
        console.log("DATE NON VALIDE")
    break;
    default:
        console.log("DATE VALIDE")
}

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
03 mai 2020 à 19:36:14

Merci beaucoup ! Tu me sauve, le isNaN fonctionne !

VinkingBanni
VinkingBanni
Niveau 10
04 mai 2020 à 07:23:06

c'est pas la bonne méthode.

VinkingBanni
VinkingBanni
Niveau 10
04 mai 2020 à 10:44:09

Apres un petit test :


var dateInput = '40/05/2001';

var date = new Date(dateInput);

if(isNaN(date.getDate()) {
console.log('pas bon');
} else {
console.log(date.getDate();
}

pas besoin de faire un parse manuel. Et c'est plus propre

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
04 mai 2020 à 17:54:25

Le 04 mai 2020 à 10:44:09 VinkingBanni a écrit :
Apres un petit test :


var dateInput = '40/05/2001';

var date = new Date(dateInput);

if(isNaN(date.getDate()) {
console.log('pas bon');
} else {
console.log(date.getDate();
}

pas besoin de faire un parse manuel. Et c'est plus propre

J'ai bien vu ton message et j'ai donc décidé de tester la fonction.

J'ai une page de test avec ce code là :



<!DOCTYPE html>
<html lang="fr">

<head>
    <title>Lire une valeur dans un champs de texte</title>
    <meta charset="utf-8">
    <style>
        #bouton {
            margin-top: 12px;
        }
    </style>
    <script>
        function controle() {
            var date = '20/05/2001';

            var myDate = new Date(date);

            if (isNaN(myDate.getDate())) {
                alert("DATE INVALIDE")
            }
            else {
                alert("DATE VALIDE")
                alert(myDate.getDate());
            }
        }
    </script>
</head>

<body>

    <h2>Lire une valeur dans un champs de texte</h2>
    <form>
        <input type="password" id="input" name="input" value=""><br>
        <input type="submit" id="bouton" value="Contrôler" onclick="controle()">
    </form>
</body>

</html> 

Cependant, bien que ma date soit => '20/05/2001', ça m'affiche date invalide dans mon alert (c'est surement dégueulasse d'utiliser les alert pour ça je m'en excuse).

De plus là doc de l'objet Date du JS nous dit quand à l'entré d'un string en paramètre de new Date :

Une chaîne de caractère représentant une date. La chaîne doit être dans un format reconnu par la méthode Date.parse() (conforme à la RFC 1123 de l'IETF ou à l'ISO8601).
Note : L'analyse de chaînes via le constructeur Date (ou via la méthode Date.parse()) est déconseillée car il existe différentes incohérences entre les différents navigateurs. La prise en charge des chaînes de format de la RFC 2822 est une simple convention. La norme ISO 8601 n'est pas complètement respectée car les chaînes qui décrivent uniquement des dates (ex. "1970-01-01") sont considérées en UTC et non en heure locale.

Donc je pense que le format jj/mm/aaaa n'est pas reconnu par le constructeur de Date.

Message édité le 04 mai 2020 à 17:55:35 par Suzuka_Nakamoto
boucif
boucif
Niveau 24
04 mai 2020 à 18:29:55

Essaye ca plutot
var date =new Date('2001/05/20');
20/05/2001 est une notation Française, pour les US c'est 05/20/2001, pouvant poser des problèmes de parsing, privilégie de commencer par l'année ça sera toujours yyyy/mm/dd peut importe la localisation, c'est valable en js comme dans d'autre langage.

Sinon pour traiter les dates il y a la librairie momemtjs
https://momentjs.com/

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
04 mai 2020 à 18:34:35

Le 04 mai 2020 à 18:29:55 boucif a écrit :
Essaye ca plutot
var date =new Date('2001/05/20');
20/05/2001 est une notation Française, pour les US c'est 05/20/2001, pouvant poser des problèmes de parsing, privilégie de commencer par l'année ça sera toujours yyyy/mm/dd peut importe la localisation, c'est valable en js comme dans d'autre langage.

Sinon pour traiter les dates il y a la librairie momemtjs
https://momentjs.com/

Le problème, c'est que je ne peut pas. C'est un projet pour la fac et ils nous demandent de faire des trucs bizarres (genre on a pas le droit d'utiliser des types email ou date dans nos input HTML, ou de pattern pour nos mdp). Donc il nous faut trouver une solution et dans ce cas précis, la date doit pouvoir être rentrée au format jj/mm/aaaa avec un type texte. A nous de nous débrouiller pour que ça fonctionne ensuite.

VinkingBanni
VinkingBanni
Niveau 10
04 mai 2020 à 18:48:53

Déja dans un premier temps émule le comportement d'un datime

VinkingBanni
VinkingBanni
Niveau 10
04 mai 2020 à 19:16:47

enfaite tu modifie ton input en js en datetime

boucif
boucif
Niveau 24
04 mai 2020 à 19:44:34

Tu fais un split sur ta date et tu remets dans le bonne ordre

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
04 mai 2020 à 19:47:03

Le 04 mai 2020 à 19:44:34 boucif a écrit :
Tu fais un split sur ta date et tu remets dans le bonne ordre

Ducoup ça reviens à faire ce que j'ai fait au début

boucif
boucif
Niveau 24
04 mai 2020 à 19:52:59

Oui pourquoi t’as changé ça ?

Suzuka_Nakamoto
Suzuka_Nakamoto
Niveau 10
04 mai 2020 à 19:54:24

Le 04 mai 2020 à 19:52:59 boucif a écrit :
Oui pourquoi t’as changé ça ?

Je l'ai pas changé. J'ai juste testé dans un autre fichier une autre proposition de quelqu'un ici

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment