J'ai une norme <input>
zone de texte où les utilisateurs entrent une date. Je voudrais ajouter une fonctionnalité où les utilisateurs peuvent entrer +
ou -
pour ajouter/soustraire un jour de la valeur. J'ai ajouté un événement onkeypress
qui appelle cette fonction:Javascript: Ajuster la date dans la zone de texte en utilisant l'événement de pression de touche
function adjustDate(element) {
var e = event || window.event;
var code = e.charCode || e.keyCode;
switch(code) {
case 43: // user pressed "+" (plus)
if(isDate(element.value)) {
var d = new Date();
d.getDate(element.value);
d.setDate(d.getDate() + 1);
element.value = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getYear();
} else {
var today = new Date();
element.value = (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getYear();
}
if(e.preventDefault) e.preventDefault();
else e.returnValue = false;
return false;
element.select();
break;
case 45: // user pressed "-" (minus)
// ...
}
}
La fonction isDate
Je retirai Google et travaille, mais je peux le poster aussi si nécessaire.
Mon problème est le travail une fois, puis nada. Par exemple, si la valeur de la zone de texte est 10/1/2009
, puis en appuyant sur +
le fera 10/2/2009
, mais aucun effet sur les plusses suivantes. Ensuite, si j'appuie sur -
, il passe à 9/30/2009
au lieu de revenir à 10/1/2009
et ignore les touches moins les suivantes.
Je suis en train de tester IE8. Ceci est une application web interne donc d'autres navigateurs seraient bien mais pas nécessairement requis. Je n'utilise pas actuellement jQuery ou tout autre framework, et pour ce que cela serait probablement trop, alors je suis à la recherche d'une solution Javascript pure. En fait, cette fonctionnalité est simplement "agréable à avoir" et pas quelque chose que je dois passer beaucoup plus de temps. Je sais que je manque quelque chose ou que je fais tout à fait faux. Alors, c'est quoi?
Merci. Cela a fait l'affaire. –