html& js文本字段数据(DD-MM-YYYY)验证

时间:2013-03-21 12:19:42

标签: javascript html

在我的表单中,我有一个用户输入日期的文本字段。好习惯告诉我不要让用户在字段中添加任何其他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,'')"/>

我尝试将|\-放入正则表达式但没有成功。谁能指出我在哪里做错了?

4 个答案:

答案 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>