In this tutorial I show you how to display custom message for required form fields and how to emit dinamically the invalid event on field validation in JavaScript.
- Details are in the comments in code.

Show custom message for required input fields

To show a custom message for required input fields, apply the invalid event to that field, then use the setCustomValidity() method in the function called by the "invalid" event.
To remove the invalidate message on validated field, apply setCustomValidity('') in the input event.

- Example, if the email address added into a required email field is not valid; when to try to submit the form it will display a custom message.
For test, add some text and click Send.<br>
<form action='#' method='post'>
Email: <input type='email' id='email_1' required placeholder='Email address'/><br>
<input type='submit' value='Send'/>
</form>
<script>
var email_1 = document.querySelector('#email_1');

//register invalid event that shows a custom message on invalidated of the field
email_1.addEventListener('invalid', function(ev){
 ev.target.setCustomValidity('Your custom message');
});

//this is necessary to remove the invalidate mark on validated filed
email_1.addEventListener('input', function(ev){
 ev.target.setCustomValidity('');
});
</script>
- Demo:
For test, add some text and click Send.
Email:
 

Emitting the invalid event in JavaScript

By default, the invalid event is emitted when the form is submited. To emit this event dinamically on field validation in JS, call the reportValidity() method.
- For example, we have a date input field and we want the user to add a date equal or higher than current date; otherwise the field to display a custom message for required. So, we need to emit the invalid event if the value added in the "date" field is not valid or is lower than current date.
For test, select a date lower then curent date.<br>
<input type="date" id="date1" required placeholder="Select a date">
<script>
//function called by the change event
//receives the default event argument, a js object with target event
function dateActiv(ev){
 var elm = ev.target; //get the element from event
 var sel_date = new Date(elm.value);

 //if selected date is lower than current date
 if(sel_date <= new Date()){
 elm.value =''; //set empty to detect as not valid when invalid event is emitted
 elm.reportValidity(); //to emit invalid event
 }
}

//register change event that cals dateActiv()
document.querySelector('#date1').addEventListener('change', dateActiv);

//register invalid event that shows a custom message
document.querySelector('#date1').addEventListener('invalid', function(ev){
 if(ev.target.value =='' || ev.target.validity.typeMismatch) {
 ev.target.setCustomValidity('Your custom message');
 return false;
 }
 return true;
});
</script>
- Demo:
For test, select a date lower then curent date.

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag create a highlighted bolded text?
<q> <strong> <em>
<p>Address: <strong>http://CoursesWeb.net/</strong> - Tutorials.</p>
Which of these CSS codes displays the text bolded?
text-size: 18px; font-style: italic; font-weight: 800;
#id {
  font-weight: 800;
}
What JavaScript function can be used to call another function multiple times, to a specified time interval?
setInterval() setTimeout() push()
function someFunction() { alert("CoursesWeb.net"); }
setInterval("someFunction()", 2000);
Click on the correctly defined variable in PHP.
var vname = 8; $vname = 8; $vname == 8;
$vname = 8;
echo $vname;
Set custom message for required and field validation

Last accessed pages

  1. The Mastery of Love (3341)
  2. Multiple Select Dropdown List with JavaScript (7841)
  3. Ajax-PHP File Manager (4736)
  4. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (70654)
  5. Add, Change, and Remove Attributes with jQuery (35782)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (1347)
  2. Qwop (670)
  3. Theme Hotel (590)
  4. Read Excel file data in PHP - PhpExcelReader (544)
  5. Register and show online users and visitors (493)