7

javascript 或 jQuery 中是否有一种方法可以在为键输入和复制粘贴到文本框中键入日期时动态检测和更改?

我正在尝试创建一个功能文本框,它有两个数字,例如一个月。

由于月份可以是 1 到 12 之间的数字,我想强制第一个数字为 1 或 0。

然而,我尝试做的技巧是当文本框首先获得焦点并且用户想要输入一个数字时,如果该数字是 2 - 9 我想要一个零来自动填充第一个位置,然后是 9第二个位置。

在我输入任何内容之前,此日期输入将如下所示:

__/__/_____

如果我输入“1”

1_/__/_____

如果我输入“2”应该得到

02/__/_____

如果我输入“22”应该得到

02/2_/_____

如果我输入“77”应该得到

07/07/_____

我会对带有代码的答案或已经执行此操作的工具的链接或以前帖子的链接非常感兴趣?

最终我想把它放在一个蒙版中,所以 7/7/2011 或 7/7/11 或 07/07/2011 将始终填充到 07/07/2011。在最终的最终版本中,我试图让年份默认为当前十年,但下降到每 10 年++--。

4

3 回答 3

2

为什么不将侦听器附加到文本框的模糊部分,而不是用户的输入。

考虑一下如果您输入“1”时的用户体验,突然间,输入开始在您正在执行的操作中添加或删除零,而您正在执行此操作?

var dayInput = document.getElementById("day-input");
// usually, I'd just use event-listeners, but feel free to refactor
dayInput.onblur = handleDayOrMonth;

function handleDayOrMonth () {
    var el = (this === window) ? event.srcElement : this,
        number_string = el.value;

    // checking that it's an actual number
    if (!isNaN(parseInt(number_string)) {
        if (number_string.length === 1) { el.value = "0" + number_string; }
    }
}

处理年份是一样的,只是你要在它的开头添加“20”。

随意 jQuery 吧。

于 2012-07-19T18:14:05.050 回答
2

我相信您想要的功能是由jQuery Masked Input 插件提供的

演示:http: //jsfiddle.net/SO_AMK/SEXAj/

请注意,它也只允许数字字符。

于 2012-07-27T02:47:07.147 回答
0

答案在这里... jQuery屏蔽输入插件

于 2012-07-30T18:48:19.973 回答