我有一个标准<input>
文本框,用户可以在其中输入日期。我想添加一些功能,用户可以在其中输入+
或-
从值中添加/减去一天。我添加了一个onkeypress
调用此函数的事件:
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)
// ...
}
}
isDate
我从谷歌上撤下的功能可以使用,但如有必要,我也可以发布它。
我的问题是一次作品,然后是nada。例如,如果文本框的值为10/1/2009
然后press+
将使其成为10/2/2009
,但对后续加号没有影响。然后,如果我按下-
它会转到9/30/2009
而不是返回10/1/2009
,并忽略随后的减号按键。
我在IE8上测试。这是一个内部网络应用程序,因此其他浏览器会很好,但不一定是必需的。我目前没有使用 jQuery 或任何其他框架,这可能是矫枉过正,所以我正在寻找一个纯 Javascript 解决方案。事实上,这个功能只是“很高兴拥有”,而不是我需要花更多时间在上面的东西。
我知道我要么错过了什么,要么做错了。那么它是哪一个?