我正在尝试对日期输入字段设置限制,因此用户不会夸大日期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的书籍,所以我可以自己拿到这个?
答案 0 :(得分:1)
我认为你误解了dtArray
中的内容(这不是一个好名字)。它是此正则表达式中捕获组的输出:
/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/
匹配mm/dd/yyyy
(这些是数字)所以
m
或mm
/
或-
分隔符d
或dd
/
或-
分隔符yyyy
它们不会偏移到字符串中。 (dtArray[0]
将是匹配的整个日期。)修改后的正则表达式是
/^(\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/
即。在第一个位置的四位数,然后你得到
yyyy
/
或-
分隔符m
或mm
/
或-
分隔符d
或dd
等等
dtYear = dtArray[1];
dtMonth = dtArray[3];
dtDay = dtArray[5];
(注意这三个变量实际上是字符串,而不是整数,虽然包含整数值的字符串表示。但是JavaScript就是这样,当你尝试使用它们时它们会被强制转换为整数作为整数。)