2017-08-06 1 views
1

Bonjour à tous j'ai besoin d'aide js moment j'ai un champ d'entrée appelé Start et un autre arrêt appeléDifférence entre 2 fois en utilisant un moment js

start = moment().format('LT'); // works when i click on the play button 
stop = moment().format('LT'); // works when i focus on the counter input beside the play button --> for test 

je veux changer le champ de saisie de démarrage manuellement si je veux une fonction de validation qui prend la valeur d'entrée et vérifie si l'entrée est valide ou non sur ce formulaire LT par ex: quand je supprime la valeur de l'entrée 6:39 PM comme ci-dessous dans l'image et tape par exemple 6:02:00 PM or 1:00 PM or ajouter une chaîne 5:dfds2 PM i voulez consigner la console tout message d'erreur and return the previous value to the input again aussi quand je supprime la valeur actuelle et ajoute un nombre comme '1 par exemple' withou t am or pm il détermine si le nombre est avant ou après que d'arrêter la valeur d'entrée et tapez dans le champ d'entrée comme celui-ci 1:00 AM or 1:00PM i utilisé cette fonction pour valider le champ d'entrée de démarrage, mais il me donne de mauvaises réponses

function validate(inputVal) { 
    let temp =this.startTime; 
    let x = temp; 
    if(moment(inputVal, "hh:mm").isValid()) { 
    x= moment(inputVal, "HH:mm").format('hh:mm A'); 
    console.log("inputVal is: " + inputVal + " and x is: " + x); 
    this.startTime = x 
    } else { 
    this.startTime = "temp"; 
    console.log("no"); 
    } 
} 

Voici le pic enter image description here pour plus d'informations vous pouvez visiter toggl website mon idée est prise à partir de là toute aide?! Merci à l'avance

+0

votre contrôle si 'val' est valide sur cette ligne: 'moment (val," hh: mm "). isValid()'. Voulez-vous vérifier votre 'inputVal'? – enjoylife

+0

@enjoylife oui bien sûr ici 'val == inputVal' j'ai mis à jour ma question thx. –

Répondre

1

je suis allé de l'avant et nettoyé votre fonction un peu, réduit la logique, maintenant, vous devez juste vous assurer que le format moment est ce que vous cherchez

function validate(val) { 
    let parsedTime = moment(val, "hh:mm"); 
    if (parsedTime.isValid()) { 
     this.startTime = parsedTime.format('hh:mm A'); 
    } 
} 
+0

thx mais quand je tape comme ceci exactement '5: bgb2' l'entrée est' 05:02 AM' qui n'est pas correcte parce qu'il y a 'bgb' qui a rendu l'entrée invalide ou même quand je tape' 5: 10: ' remplace également le champ de saisie avec cette valeur ce n'est pas correct une idée une chose de plus dans la deuxième condition 'else' je veux prendre la valeur de départ qui est pour ex' 1:25 Am' et si j'ai écrit dans le champ de saisie tout valeur invalide, il renvoie '1:25 Am' retour à l'entrée à nouveau pas la valeur t'temp'. –

+0

merci mais pourriez-vous s'il vous plaît lire le commentaire ci-dessus –