4

Just a really simple login and redirect, but the script doesn't fire since I changed the button input type to 'submit' and the onClick event to onSubmit. All is does now is just add the username and password as a string to the url.

<form name="loginform">
    <label>User name</label>
    <input type="text" name="usr" placeholder="username"> 
    <label>Password</label>
    <input type="password" name="pword" placeholder="password">
    <input type="submit" value="Login" onSubmit="validateForm();" />
</form>

<script>
    function validateForm() {
        var un = document.loginform.usr.value;
        var pw = document.loginform.pword.value;
        var username = "username"; 
        var password = "password";
        if ((un == username) && (pw == password)) {
            window.location = "main.html";
            return false;
        }
        else {
            alert ("Login was unsuccessful, please check your username and password");
        }
      }
</script>
10
  • 1
    What is the actual question? Commented Apr 17, 2014 at 13:43
  • The script doesn't work. It just adds ?usr=username&pword=password to the url instead of window.location Commented Apr 17, 2014 at 13:45
  • Did you type "username" in username field and "password" in password field? Because otherwise it will not pass your if statement. Commented Apr 17, 2014 at 13:46
  • Just put onSubmit handler on the form tag instead of input. Commented Apr 17, 2014 at 13:51
  • The script fires now, when I inputing nothing it goes to the else statement and then prints the ?usr=&pword= in the url but when I enter the correct username and password it still puts ?usr=username&pword=password on the url Commented Apr 17, 2014 at 13:53

6 Answers 6

7
  1. The input tag doesn't have onsubmit handler. Instead, you should put your onsubmit handler on actual form tag, like this:

    <form name="loginform" onsubmit="validateForm()" method="post">

    Here are some useful links:

  2. For the form tag you can specify the request method, GET or POST. By default, the method is GET. One of the differences between them is that in case of GET method, the parameters are appended to the URL (just what you have shown), while in case of POST method there are not shown in URL.

    You can read more about the differences here.

UPDATE:

You should return the function call and also you can specify the URL in action attribute of form tag. So here is the updated code:

<form name="loginform" onSubmit="return validateForm();" action="main.html" method="post">
    <label>User name</label>
    <input type="text" name="usr" placeholder="username"> 
    <label>Password</label>
    <input type="password" name="pword" placeholder="password">
    <input type="submit" value="Login"/>
</form>

<script>
    function validateForm() {
        var un = document.loginform.usr.value;
        var pw = document.loginform.pword.value;
        var username = "username"; 
        var password = "password";
        if ((un == username) && (pw == password)) {
            return true;
        }
        else {
            alert ("Login was unsuccessful, please check your username and password");
            return false;
        }
  }
</script>
Sign up to request clarification or add additional context in comments.

2 Comments

Almost works 100%, it redirects to main.html but the string is still be added to the url.. any ideas?
Oh, I forget to add method type. I've updated the code.
2

You can do two things here either move the onSubmit attribute to the form tag, or change the onSubmit event to an onCLick event.

Option 1

<form name="loginform" onSubmit="return validateForm();">

Option 2

<input type="submit" value="Login" onClick="return validateForm();" />

1 Comment

@DanMitchell, just make sure validateForm always returns false;
2
<!DOCTYPE html>
<html>
<head>
<script>
function vali() {
var u=document.forms["myform"]["user"].value;
var p=document.forms["myform"]["pwd"].value;
if(u == p) {
alert("Welcome");
window.location="sec.html";
return false;
}
else
{
alert("Please Try again!");
return false;
}
}
</script>
</head>
<body>
<form method="post">
<fieldset style="width:35px;">  <legend>Login Here</legend>
<input type="text" name="user" placeholder="Username" required>
<br>
<input type="Password" name="pwd" placeholder="Password" required>
<br>
<input type="submit" name="submit" value="submit" onclick="return vali()">
</form>
</fieldset>
</html>

Comments

1
<form name="loginform" onsubmit="validateForm()">

instead of putting the onsubmit on the actual input button

Comments

1

Add a property to the form method="post".

Like this:

<form name="loginform" method="post">

Comments

0
function validate() {
        var username = document.getElementById("username").value;
        var password = document.getElementById("password").value;
        if (username == null || username == "") {
            alert("Please enter the username.");
            return false;
        }
        if (password == null || password == "") {
            alert("Please enter the password.");
            return false;
        }
        alert('Login successful');
        
    } 

  <input type="text" name="username" id="username" />
  <input type="password" name="password" id="password" />
  <input type="button" value="Login" id="submit" onclick="validate();" />

2 Comments

While this answer is probably correct and useful, it is preferred if you include some explanation along with it to explain how it helps to solve the problem. This becomes especially useful in the future, if there is a change (possibly unrelated) that causes it to stop working and users need to understand how it once worked.
Oh Sorry, I forget to add some explanation. I Will do it in my further answers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.