I’m trying to let user check if his email adress pass RFC standard, comparing it with regular expression dropped below.
I already checked few examples on console using function responsible for excecute validation test. I’m aware of possibilities that my regex is not ready for, but whenever I tried a few examples on console – it works.
Problem begins when function gets value from included ‘text’ HTML form.
Using Javascript I also checked how value is interpretated by browser (Simply pasting text into another div) – result is ok.
Why validation doesn’t work properly whenever use input value on HTML forms?
const regular = /^[a-z/d]+[/d/w.-]*@(?:[a-z/d-]+[a-z/d-].+){1,5}[a-z]{1,3}[a-z]$/i; test = function(email) { if (regular.test(email) == false) { alert('Your email adress is not correct. Try again!') document.getElementById('result').innerHTML = document.getElementById('text').value; return false; } else { alert('Match'); return true; } }
<div id='form-structure'> <form name='form1' action='#'> <label for='email' name='email'>E-mail</label> <input type='text' name='text' id='text' placeholder="Enter your email" required> <button type='submit' name='submit' onclick="test(document.form1.text)" value='Submit'>Test</button> </form> </div> <div id='result' style='font-size: 15px'> </div>
Advertisement
Answer
While this may not be the best of code example, the simple solution to your issue lies in document.form1.text
. Simple change it to document.forms.form1.text
.
E.g.
<button type='submit' name='submit' onclick="test(document.forms.form1.text.value)" value='Submit'>Test</button>
EDIT:
I missed the .value before. Now it should work.