1

I have here my simulation of my actual code.

What I need to do is that if the date format is not valid, it should return false and will not submit.

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";
             return false;
         } else {
             document.getElementById("lblTest").style.color = "black"
             return true;
         }
     } else {
         document.getElementById("lblTest").style.color = "black";
         return true;
     }
 }
  
  $("#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>
Pooja Kedar
  • 439
  • 2
  • 10
  • 23
Grinex
  • 128
  • 1
  • 1
  • 10

5 Answers5

1

You can handle submit event. And if validation not pass return false:

$('form').submit(function(){
    //validate here
})
Alex Slipknot
  • 2,439
  • 1
  • 18
  • 26
0

Better you use HTML5 Date type input and parse the date in format you want.. That would be much convenient way of doing this..

UPDATE

Here is input Box :

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

Here is Code To Parse It:

    function fngetDate(val){ 
var dateEntered = new Date(val); var myFormat = dateEntered.getDate() + '.'+dateEntered.getMonth()+'.'+dateEntered.getFullYear(); alert(myFormat); }
  • if so sir, can you give me a code with html5 date input? because i tried it and i cant format the date type on dd.mm.yyyy – Grinex Mar 14 '17 at 09:16
  • Here is input Box : Here is Code To Parse It: function fngetDate(val){ var dateEntered = new Date(val); var myFormat = dateEntered.getDate() + '.'+dateEntered.getMonth()+'.'+dateEntered.getFullYear(); alert(myFormat); } – Akshay Patwa Mar 14 '17 at 09:39
  • Hi, thanks for this but it is not working on my end. still mm.dd.yyyy is the format shown. – Grinex Mar 14 '17 at 09:56
0

If chrome is the only target browser:

Use date type input <input type="date">

Else Use pattern <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>

Working JSFiddle here: https://jsfiddle.net/0ay8jkx4/2/

Sunil B N
  • 4,159
  • 1
  • 31
  • 52
0

Try this code

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;
    }
}

here,enable or disable submit button based on date validation

ubm
  • 636
  • 11
  • 21
-1

just do this

$("form").submit(function(){
    return validateDate(document.getElementById("txtDate"));
});

and of course you should fix your regex to:

^(([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]))))$