0

Tired to validate textbox allow only date format.If I enter text or textwithnumber or anyother without date format I want to show error message like 'please enter mm/dd/yyyy format'.Textbox should be allow only this mm/dd/yyyy format.How do it using javascript or jquery

function isDate() {

     var txt = document.getElementById("date").value; 
     var regEx = /^\d{4}-\d{2}-\d{2}$/;

     if(txt.match(regEx)){

     alert("Please enter date format mm/dd/yyyy");

     }else{

      alert("Thanks..You have entered correct date");

     }

   }

DEMO:http://jsfiddle.net/nrt76dsq/1/

Malli
  • 83
  • 1
  • 8
  • 1
    You should use an actual [date input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date) and [form validation](https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation) instead. – str Nov 12 '19 at 08:38
  • No..I want to show error message using regEx ..So can you edit my code? – Malli Nov 12 '19 at 08:40
  • A regex is the wrong tool to do date validation. Also in most cases, you should not enforce a certain date format. Some users might not be familiar with mm/dd/yyyy. – str Nov 12 '19 at 08:42

2 Answers2

2

This works! Basic Javascript Validation!

function checkdate() {
  var input = document.getElementById("date");
  var validformat = /^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
  if (!validformat.test(input.value))
    alert("Invalid Date Format. Please correct and submit again.")
  else { //Detailed check for valid date ranges
    var monthfield = input.value.split("/")[0]
    var dayfield = input.value.split("/")[1]
    var yearfield = input.value.split("/")[2]
    var dayobj = new Date(yearfield, monthfield - 1, dayfield)
    if ((dayobj.getMonth() + 1 != monthfield) || (dayobj.getDate() != dayfield) || (dayobj.getFullYear() != yearfield))
      alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
    else
      alert("You have entered the valid date format!")
  }
}
<input type="text" id="date" name="date" placeholder="dd/mm/yyyy" />
<button onclick="checkdate()">Check</button>
-1

give it a try

function isDate() {
     
         var txt = document.getElementById("date").value; 
         var regEx = /^\d{2}\/\d{2}\/\d{4}$/;
  
         if(!regEx.test(txt)){
         
         alert("Please enter date format mm/dd/yyyy");
         
         }else{
         
          alert("Thanks..You have entered correct date");
         
         }
    
}
<input type="text" id="date" name="date" value="dd/mm/yyyy" />
<button onclick="isDate();">Check</button>

 
SJ_OWOW
  • 182
  • 1
  • 5
  • I thought you only wanted the format. The validation is actively discussed on this page. https://stackoverflow.com/questions/15491894/regex-to-validate-date-format-dd-mm-yyyy – SJ_OWOW Nov 12 '19 at 08:55
  • @SJ_OWOW:: How to use this only for mm/dd/yyyy format? var dateReg = new RegExp(['^(?:(?:(?:0?[13578]|1[02])(\\/|-|\\.)31)', '\\1|(?:(?:0?[1,3-9]|1[0-2])(\\/|-|\\.)(?:29|30)', '\\2))(?:(?:1[6-9]|[2-9]\\d)?\d{2})$|^(?:0?2(\\/|-|\\.)', '29\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|', '[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))', '$|^(?:(?:0?[1-9])|(?:1[0-2]))(\\/|-|\\.)', '(?:0?[1-9]|1\\d|2[0-8])\\4', '(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'].join(''),"g"); – Malli Nov 12 '19 at 10:04