2017-03-14 6 views
1

私の実際のコードは私のシミュレーションです。JavaScriptのバリデーション提出時

私がする必要があるのは、日付書式が有効でない場合、falseを返してサブミットしないことです。これを行うための非常に便利な方法だろう

function validateDate(DateField) { 
 
\t  var regDate = /^([0-9]{2})\.([0-9]{2})\.([0-9]{4})$/; 
 

 
\t  if(DateField.value.length > 0) { 
 
\t   if(regDate.test(DateField.value) == false) { 
 
\t    alert('Date Format should be dd.mm.yyyy!'); 
 
\t    document.getElementById("lblTest").style.color = "red"; 
 
\t    return false; 
 
\t   } else { 
 
\t    document.getElementById("lblTest").style.color = "black" 
 
\t    return true; 
 
\t   } 
 
\t  } else { 
 
\t   document.getElementById("lblTest").style.color = "black"; 
 
\t   return true; 
 
\t  } 
 
\t } 
 
    
 
    $("#submit").click(function(){ 
 
    //condition should be here but right now I dont know what this should be 
 
    });
<form method="post"> 
 
    <label id="lblTest">Date</label> 
 
    <input type="test" placeholder="dd.mm.yyyy" id="txtDate" onblur="validateDate(this);"> 
 
    <input type="button" id="submit" formaction="www.google.com" value="Submit"> 
 
</form>

+6

申し訳ありません、ご質問をお寄せください。 –

+1

したがって、99-99-9999の日付は完全に細かいです。 –

+1

正規表現は改善できますが、ロジックは正常に動作しています – Logar

答えて

0

function validateDate(DateField) { 
    var regDate = /^([0-9]{2})\.([0-9]{2})\.([0-9]{4})$/; 

    if(DateField.value.length > 0) { 
     if(regDate.test(DateField.value) == false) { 
      alert('Date Format should be dd.mm.yyyy!'); 
      document.getElementById("lblTest").style.color = "red"; 
     $('#submit').attr('disabled', 'disabled'); 

      return false; 
     } else { 
      document.getElementById("lblTest").style.color = "black" 
     $('#submit').attr('disabled', false); 
      return true; 
     } 
    } else { 
     document.getElementById("lblTest").style.color = "black"; 
    $('#submit').attr('disabled', false); 
     return true; 
    } 
} 

ここにこのコードを試してみて、送信ボタンを有効または無効日付の検証に基づいて

+0

どうあるべきかを知りません。それは動作します!このためおかげで:) – Grinex

0

より良いあなたがHTML5日付型の入力を使用して、必要な形式で日付を解析.. ..

UPDATE

ここに入力ボックスがあります:

<input type="date" onBlur="fngetDate(this.value)"> 
ここ

は、コードはそれを解析することです:

function fngetDate(val){ 
var dateEntered = new Date(val); var myFormat = dateEntered.getDate() + '.'+dateEntered.getMonth()+'.'+dateEntered.getFullYear(); alert(myFormat); } 
+0

もしそうなら、あなたはhtml5日付入力のコードを私に渡すことができますか?私はそれを試したので、dd.mm.yyyyの日付型をフォーマットできません。 – Grinex

+0

ここに入力ボックスがあります: ここにコードを解析する: 関数fngetDate(val){ var dateEntered = new Date(val); var myFormat = dateEntered.getDate()+ '。' + dateEntered.getMonth()+ '。' + dateEntered。getFullYear(); 警告(myFormat)。 } –

+0

こんにちは、このためのおかげで、それは私の終わりに取り組んでいません。まだmm.dd.yyyyは表示されている形式です。 – Grinex

0

クロムのみをターゲットブラウザの場合:他に

使用date type input<input type="date">

ここでパターン<input type="text" pattern="yourRegEx" required>

<form method="post"> 
    <label id="lblTest">Date</label> 
    <input type="date" required> 
    <br> 
    <label>another Date</label> 
    <input type="text" required pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}" value="" id="dates_pattern0" placeholder="dd.MM.YYYY"> 
    <input type="text" formaction="www.google.com" value="Submit"> 
</form> 

ワーキングJSFiddleを使用します。 https://jsfiddle.net/0ay8jkx4/2/

+0

私はすでに試してみました。日付はmm.dd.yyyyの形式で表示されます。 – Grinex

+0

..今 –

+0

こんにちは答えを確認してください。ありがとうございますが、日付フィールドに必須です。 – Grinex

1

送信イベントを処理できます。そして、検証に合格しない場合はfalseを返します。

$('form').submit(function(){ 
    //validate here 
}) 
+0

は現在、私はコードが、これは私が望んでいたまさにではありません:) – Grinex

+0

ちょうどそこに置か '返しvalidateDate(のdocument.getElementById(「txtDate」))' –

-1

はちょうどこの

$("form").submit(function(){ 
    return validateDate(document.getElementById("txtDate")); 
}); 
を行います

もちろん正規表現を次のように修正する必要があります:

^(([0-2]{0,1}[1-9]{1})|(3{0,1}[0-1]{0,1}))\.((0[1-9])|(1[0-2]))\.((19[0-9][0-9])|(20((0[0-9])|(1[0-7]))))$ 
+0

あなたの正規表現の先生を説明することができますか? – Grinex

+0

これは'31 .02.2017' のためにtrueを返しますので、日付を確認するには特に良くありません。 – RobG

関連する問題