-1

I am trying to make a form validation with javascript. I am wondering, instead of innerHTML to show my error message are there another way of showing my error message.

Here is the Code:

<form>
<p>
Email Address:<br>
<input type="text" id="email-address" name="email" style="width:200px;">
</p>
<p id="my-error-message-container" style="display:none; border:1px solid red; color:red; background-color:yellow; font-weight:bold; padding:5px; width:188px; position: relative;"></p>
<input type="submit" value="Submit Form" style="width:200px;" onclick="return ErrorCheck()">
</form>

<script type="text/javascript">
function RemoveErrorMessageFromPage()
{
   var IDofContainer = "my-error-message-container";
   document.getElementById(IDofContainer).innerHTML = "";
   document.getElementById(IDofContainer).style.display = "none";
}

function InsertErrorMessageIntoPage(content)
{
   var IDofContainer = "my-error-message-container";
   document.getElementById(IDofContainer).style.display = "";
   document.getElementById(IDofContainer).innerHTML = content;
}

function ErrorCheck()
{
   RemoveErrorMessageFromPage();
   var email = document.getElementById("email-address").value;
   if( ! email.length )
   {
      InsertErrorMessageIntoPage("The email address is required.");
      return false;
   }
   if( ! email.match(/\w@\w+\.\w/) )
   {
      InsertErrorMessageIntoPage("The email address appears to be invalid.");
      return false;
   }
   return true;
}
</script>
Kamil Kiełczewski
  • 85,173
  • 29
  • 368
  • 345

2 Answers2

0

Your approach (having an HMTL element for an error message and setting its text and visibility as appropriate when an error occurs / is resolved) is fine. Usually, textContent is proffered over innerHTML as it's more explicit (you're setting text, not HTML which happens to be text).

The MDN page for textContent actually compares textContent, innerHTML, and innerText, 3 similar attributes.

junvar
  • 11,151
  • 2
  • 30
  • 46
-1

Here is faster alternative (more)

err.insertAdjacentHTML('afterbegin','My error message');
.err { color: red }
<div id="err" class="err"></div>
Kamil Kiełczewski
  • 85,173
  • 29
  • 368
  • 345