插入日期时动态智能日期掩码

时间:2012-07-19 17:53:21

标签: javascript jquery prototypejs

在键入输入和复制并粘贴到文本框的日期时,是否有一种方法可以动态检测和更改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年降低一次++ - 。

3 个答案:

答案 0 :(得分: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 it。

答案 1 :(得分:2)

我相信您想要的功能由jQuery Masked Input plugin

提供

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

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

答案 2 :(得分:0)

答案就在这里...... jQuery masked input plugin