views:

439

answers:

2

Im Looking for a simple solution to stop a login form from submitting with empty input fields. The code for the form is below. I would like to use a simple Javascript soluiton if possible.

<form id="login" method="post" action=""> 
    <input type="text" name="email" id="email" /> 
    <input type="password" name="pwd" id="pwd" /> 
    <button type="submit" id="submit">Login</button>
</form>

If possible I would also like to change the border of the empty field(s).

Thanks in advance.

+1  A: 

Possible approach:

  • setting action to #
  • adding handler to the submit button or the onsubmit of the form
  • change the action of the form, if text fields are not empty

Edit: To make this even work for non-javascript users insert the #-action when page is loaded.

Hippo
And don't forget to add return false; in your onsubmit handler, if the text field is empty. Also, check out the jQuery Validation plugin for a better approach to validating forms: http://docs.jquery.com/Plugins/Validation
Traveling Tech Guy
you are right with the return false. But I have not seen any thing about jQuery in the question ;-)
Hippo
If possible could you provide an example of what you mean. I'm a bit new to JS. My roots are in xHTML and CSS.
Brad
+3  A: 

Sample code with dummy checks:

<script type="text/javascript">
function checkForm(form) {
    var mailCheck = checkMail(form.elements['email']),
        pwdCheck = checkPwd(form.elements['pwd']);
    return mailCheck && pwdCheck;
}

function checkMail(input) {
    var check = input.value.indexOf('@') >= 0;
    input.style.borderColor = check ? 'black' : 'red';
    return check;
}

function checkPwd(input) {
    var check = input.value.length >= 5;
    input.style.borderColor = check ? 'black' : 'red';
    return check;
}
</script>

<style type="text/css">
#login input {
    border: 2px solid black;
}
</style>

<form id="login" method="post" action="" onsubmit="return checkForm(this)"> 
    <input type="text" name="email" id="email" onkeyup="checkMail(this)"/> 
    <input type="password" name="pwd" id="pwd" onkeyup="checkPwd(this)"/> 
    <button type="submit" id="submit">Login</button>
</form>
Christoph