I'm trying to validate user input by checking if something has been entered into the textbox. I trying to do this using javascript. What i want to achieve is, a user gets an alert box that a particular field is empty. A span will also be used to display an error message on the field that is required. Once the user starts typing, the error message should clear. Please how do i do this? Here is what I've done so far, but it is not working as expected and I feel like I'm repeating code. Fiddle
<form>
<div id="Login">
<div>
<label for="signin_email">Email Address*: </label><input id="signin_email" name="signin_email" type="email" autofocus maxlength="50" /><span style="display:none;" id="signin_emailerror" name="signin_emailerror">*Please enter your Email address</span>
</div>
<div>
<label for="signin_pword">Password*: </label><input id="signin_pword" name="signin_pword" type="password" maxlength="24" /><span style="display:none;" id="signin_pworderror" name="signin_pworderror">*Please enter your Password</span>
</div>
<div>
<button type="submit" id="signin" name="signin" value="Sign In" onclick="return signin_validate()">Sign in</button>
</div>
</div>
<div id="register">
<h2>Register here</h2>
<div>
<label for="fname">First Name*: </label>
<input id="fname" name="fname" maxlength="30" type="text" /><span style="display:none;" id="fnameerror" name="fnameerror">*Please enter your First Name</span>
</div>
<div>
<label for="lname">Last Name*: </label><input id="lname" name="lname" maxlength="30" type="text" /><span style="display:none;" id="lnameerror" name="lnameerror">*Please enter your Last Name</span>
</div>
<div>
<button type="submit" id="register" name="register" value="Register" onclick="return validateForm()">Register</button>
</div>
</div>
</form>
Javascript:
function validateForm(){
var valid=true;
var msg;
document.getElementById('fname').onkeyup=function(){
if(document.getElementById('fname').value.length==0){
valid=false;
msg='Please enter your first name';
document.getElementById('fnameerror').style.display='inline';
document.getElementById('fnameerror').style.color='red';
document.getElementById('fname').focus();
}
else{
document.getElementById('fnameerror').style.display='none';
}
if(document.getElementById('fname').value.length==0){
document.getElementById('fnameerror').style.display='inline';
document.getElementById('fnameerror').style.color='red';
valid=false;
document.getElementById('fname').focus();
msg='Please enter your first name';
}
else{
document.getElementById('fnameerror').style.display='none';
}
}
if(valid==false){
alert(msg);
}
return valid;
}
function signin_validate(){
//VALIDATION FOR SIGN IN FORM
//validating the password field
//alert("You are here");
var valid=true;
var msg;
if(document.getElementById('signin_email').value.length==0){
valid=false;
msg='Please enter your email';
document.getElementById('signin_emailerror').style.display='inline';
document.getElementById('signin_emailerror').style.color='red';
document.getElementById('signin_email').focus();
}
else{
document.getElementById('signin_emailerror').style.display='none';
}
document.getElementById('signin_email').onkeyup=function(){
if(document.getElementById('signin_email').value.length==0){
valid=false;
msg='Please enter your email';
document.getElementById('signin_emailerror').style.display='inline';
document.getElementById('signin_emailerror').style.color='red';
document.getElementById('signin_email').focus();
}
else{
document.getElementById('signin_emailerror').style.display='none';
}
}
if(valid==false){
alert(msg);
}
return valid;
}
Also, as seen in the fiddle, I have to 'forms', login and register. When i enter something in a field in register and i click the signin button, whatever i enter into register disappears. This happened on firefox but not on chrome, please how to fix this? Do i need to create two separate forms? Is it ideal to do so?