Saisir un format minutes:secondes
Hello !!!
Bon, après 3 h de recherche et d'essais, je ne m'en sors pas du tout ...
Un champ input dans lequel je veux saisir une durée de titre, au format par exemple 03:45, en saisissant que les chiffres, sachant que chaque chiffre rentré pousse les précédents vers là gauche (un peu de la même façon que l'on saisi un montant si on fait un envoi d'argent paypal, ou bien quand on saisi un montant à facturer sur un TPE)
En gros, au départ il n'y a rien dans le champs, mais si je tape "3" par exemple, je veux que ca affiche "00:03" , si ensuite je tape 5 puis 7, ca affiche "03:57".
Un event sur le champ input en question :
Code:
onkeyup="verif_srchduree(this);"
Puis une fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function verif_srchduree(champ)
{
saisie = champ.value;
saisie = saisie.substr(-4);
longueur = saisie.length ;
longueurmanque = 4 - longueur ;
if ( longueurmanque > 0 ) {
for(x = 1; x < longueurmanque ; x++)
{
saisie = "0"+saisie;
}
}
saisie = saisie.substr(-4);
secondes = saisie.substr(-2);
minutes = saisie.slice(0,-2);
saisieretour = minutes + ":" + secondes;
document.getElementById("returninfo").innerHTML = saisieretour;
champ.value = saisieretour;
} |
2 problèmes avec ce code :
Le premier, cosmétique, chaque saisie décale tout le monde dans le champ ( si par exemple j'ai déjà saisi 2 chiffres pour faire 00:12, le fait de saisir le 3ème chiffre, affiche 00:123) avant que le traitement soit effectué. Si je remplace par onkeyup par onkeydown, pas de décalage mais valeur incorrecte (manque un chiffre).
Le deuxième, c'est que je n'arrive pas à prendre les les 2 chiffres pour les minutes et que le ":" se met n'importe où et 2 fois ( genre ":1:34")
Bref, tout est n'importe quoi :(
Et je n’ai pas encore abordé le "que des chiffres pris en compte" et aussi le "maxi 59 minutes, et aussi 59 secondes".
Merkouin à qui pourra m'apporter un coup de palme :)
Couin