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

あなたは次のようなことを試すことができます

<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

HTML5には別のアプローチがあります。

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

ただし、ブラウザは日付表示のフォーマットを担当します。

于 2013-03-21T12:26:12.213 に答える
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でこれを行うことができます

私のjsfidleを参照してください: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 に答える