从keypress事件的日期输入中获取价值

时间:2012-11-07 19:10:00

标签: javascript

有没有办法从keypress事件中的日期输入字段获取当前值?我在keypress事件中的文本输入字段上使用了jQuery .val()函数或直接的javascript .value,但是当我在日期输入字段中尝试其中任何一个时(在支持它的浏览器中,例如chrome) ),我只得到一个空字符串 - 显然在输入有效日期之前不会设置该值。

我正在使用此功能允许用户输入仅六位数的日期,例如110712,并在键入时自动添加斜杠以生成11/07/12。当然,我可以使用纯文本输入,但我喜欢弹出日期选择器,日期类型字段为我提供支持它的浏览器。

编辑: 也许我不清楚我想要做什么。从附加到日期输入字段的keypress处理程序中,我想获得用户当前在该字段中键入的内容。例如,如果用户已经键入“11”然后键入“0”,我希望能够看到该字段的当前值是“11”。使用基本文本输入(或不支持日期输入字段的浏览器),我可以从keypress事件处理程序中调用.val()或.value,它将给出“11”的结果。但是,在支持日期输入字段的浏览器中,调用val()或.value时得到的只是“”。

2 个答案:

答案 0 :(得分:1)

$("#clickme").keypress(function(event){
    alert(event.timeStamp);
  alert(new Date(event.timeStamp));

    var fullDate = new Date()
console.log(fullDate);
//Thu May 19 2011 17:25:38 GMT+1000 {}

//convert month to 2 digits
//  var twoDigitMonth = ((fullDate.getMonth().length+1) === 1)? (fullDate.getMonth()+1) : '0' + (fullDate.getMonth()+1);

 //  var currentDate = fullDate.getDate() + "/" + twoDigitMonth + "/" + fullDate.getFullYear();
 // console.log(currentDate);
    // $("#clickme").val(currentDate);
//08/11/2012
});

jsfiddle working example

以上示例显示 current date on keypress event

答案 1 :(得分:1)

<强>更新

不幸的是,似乎无法做到这一点。考虑输入[type =“date”]一个选项,其中选项是历史中的每个日期,而不是文本框。 http://www.html5tutorial.info/html5-date.php 上面的链接显示了其他浏览器以这种方式实现它。请注意,只要您的文本框具有有效日期,.val()就会获得该值。

你可以使用输入[type =“text”]和旁边的小输入[type =“date”]来完成混合,它会在更改时将其值转储到文本框中。

工作示例:http://jsfiddle.net/WaAcU/(这不会进行验证,只是将选择器转储到文本框中)

原始答案:

使用JQuery keypress处理程序。

$(dateField).keypress(function(){
    ...your validation code...
});​

琐碎的例子: http://jsfiddle.net/zUMHr/