0

在我的表单中,我有一个文本字段,用户可以在其中输入日期。好习惯告诉我不要让用户在字段中放置除 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

4 回答 4

1

HTML5 has another approach for you:

<input type="date" name="test3">

The browser is responsible for the formatting of the date presentation, though.

于 2013-03-21T12:26:12.213 回答
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 = '';
    }
}

演示:小提琴

于 2013-03-21T12:24:12.587 回答
1

使用正则表达式

/^\d{4}-\d{2}-\d{2}$|[^\d-]|-\d{2}-\d*-/

你也可以

 **/^\d{4}-\d{2}-\d{2}$|[^\d-]|-\d{2}-\d*-/.test(input.value)** 
于 2013-03-21T12:28:51.707 回答
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>
于 2013-03-21T12:31:54.700 回答