在我的表单中,我有一个用户输入日期的文本字段。好习惯告诉我不要让用户在字段中添加任何其他dgit和' - '符号。
但是我实现这样的功能有点问题。到目前为止,我有一个只接受数字的字段。如果用户试图输入字母,则删除此字母。但重点是创建(DD-MM-YYYY)
格式,因此字段必须接受' - '符号。
这是我的代码:
<input type="text" name="test3" placeholder='DD-MM-YYYY' onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"/>
我尝试将|\-
放入正则表达式但没有成功。谁能指出我在哪里做错了?
答案 0 :(得分:1)
您可以尝试类似
的内容<input type="text" name="test3" placeholder='DD-MM-YYYY' onkeyup="if (/[^\d-]/g.test(this.value)) this.value = this.value.replace(/[^\d-]/g,'')" onchange="validate(this)"/>
function validate(el){
var regex = /^(0?[1-9]|[12][0-9]|3[01])-(0?[1-9]|1[012])-\d{4}$/;
if(!regex.test(el.value)){
alert('invalid date');
el.value = '';
}
}
演示:Fiddle
答案 1 :(得分:1)
HTML5为您提供了另一种方法:
<input type="date" name="test3">
但浏览器负责日期显示的格式化。
答案 2 :(得分:1)
使用正则表达式
/ ^ \ d {4} - \ d {2} - \ d {2} $ | [^ \ D-] | - \ d {2} - \ d * - /
你也可以
**/^\d{4}-\d{2}-\d{2}$|[^\d-]|-\d{2}-\d*-/.test(input.value)**
答案 3 :(得分:0)
您可以使用HTML5
执行此操作请参阅我的jsfiddle:http://jsfiddle.net/H7tMZ/2/
<form>
<input type="text" name="date" pattern="\d{1,2}-\d{1,2}-\d{4}" placeholder="dd-mm-jjjj"/>
<button type="submit"/>
</form>