为日期创建数字限制;年,月和日

时间:2014-04-25 00:08:43

标签: javascript jquery

我正在尝试对日期输入字段设置限制,因此用户不会夸大日期3000这样的日期。我发现这个整齐solution有效。但是我希望yyyy / mm / dd格式的日期也有限制,所以mm介于1-12之间,dd介于1-31之间,yy介于1900-2100之间。

这是jsfiddle,我无法使用格式yyyy / mm / dd。如果我将dtArrays更改为

dtMonth = dtArray[5]; dtDay= dtArray[7]; dtYear = dtArray[1];

年份工作但mm最终代替dd。我能做错什么?还有什么更好的方法来实现这一目标吗?最后一个问题..这个问题似乎很简单,你会推荐什么关于jquery / javascript的书籍,所以我可以自己拿到这个?

1 个答案:

答案 0 :(得分:1)

我认为你误解了dtArray中的内容(这不是一个好名字)。它是此正则表达式中捕获组的输出:

/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/

匹配mm/dd/yyyy(这些是数字)所以

  • [1] = mmm
  • [2] = /-分隔符
  • [3] = ddd
  • [4] = /-分隔符
  • [5] = yyyy

它们不会偏移到字符串中。 (dtArray[0]将是匹配的整个日期。)修改后的正则表达式是

/^(\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/

即。在第一个位置的四位数,然后你得到

  • [1] = yyyy
  • [2] = /-分隔符
  • [3] = mmm
  • [4] = /-分隔符
  • [5] = ddd

等等

dtYear  = dtArray[1];
dtMonth = dtArray[3];
dtDay   = dtArray[5];

(注意这三个变量实际上是字符串,而不是整数,虽然包含整数值的字符串表示。但是JavaScript就是这样,当你尝试使用它们时它们会被强制转换为整数作为整数。)