我有一個用戶輸入日期的標準<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
,則按+
將使其爲10/2/2009
,但對後續加號沒有影響。然後,如果我按-
它會去9/30/2009
,而不是回到10/1/2009
,並忽略隨後的減按鍵。
我在測試IE8。這是一個內部網絡應用程序,所以其他瀏覽器會很好,但不一定是必需的。我目前沒有使用jQuery或任何其他框架,而這可能是矯枉過正,所以我正在尋找一個純粹的Javascript解決方案。事實上,這個功能只是一個「很好有」,而不是我需要花費更多時間的東西。
我知道我要麼失去了一些東西,要麼完全錯誤。那它是哪一個?
謝謝。那就是訣竅。 – 2009-10-01 17:36:28