2017-04-03 46 views
1

我的JSP頁面中有兩種形式,應該由兩個嵌入式JS腳本驗證(請參閱下面的代碼)。麻煩的是腳本無法正常工作,並省略驗證第一個條目(分別爲username和loginName)。我有兩個外部的Javascript文件來做驗證,但也有類似的問題。JSP頁面表單驗證:2個表單和2個腳本

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html> 
     <head> 
      <title>Scotia Login Page</title> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta> 
      <!-- <script type="text/javascript" src="scripts/stafflogin.js"></script> --> 
      <!--<script type="text/javascript" src="scripts/userlogin.js"></script> --> 
      <link rel="stylesheet" type="text/css" href="styles/DWBA.css"/> 
     </head> 
     <body> 
      <div class="outer"> 
       <div class="header"><h1>Scotia Island & Wildlife Cruises</h1></div> 
       <div class="box"><h2>Login Page</h2> 

        <script> 
         function validateform1() { 
          var username = document.stafflogin.username.value; 
          var password = document.stafflogin.password.value; 

          if (username === null || username === "") { 
           alert("Please enter the admin username"); 
           document.stafflogin.username.focus(); 

           return false; 
          } else if (password === null || password === "") { 
           alert("Please enter the admin password"); 
           document.stafflogin.password.focus(); 
           return false; 
          } 
         } 
        </script> 
        <form name="stafflogin" action="CustomerServlet" onsubmit="return validateform1()"><!-- --> 
         <h3>Staff Login with username and password</h3> 
         <p> To login, enter details below:</p> 
         <table cellspacing="8" border="0"> 
          <tr> 
           <td align="left"><p>Staff Username:</p></td><!-- USERNAME is admin --> 
           <td><input type="text" name="username" id="username" /></td> 
          </tr> 
          <tr> 
           <td align="left"><p>Staff Password:</p></td><!-- PASSWORD is admin --> 
           <td><input type="password" name="password" id="password" /></td> 
          </tr> 
          <tr> 
           <td align="left"><input type="submit" value="stafflogin" name="submit" style="width:75px" /></td> 
           <td><br /><input type="hidden" name="username" value="" /></td> 
          </tr> 
         </table> 
        </form> 
        <br /> 
        <script> 
         function validateform2() { 
          var name = document.userlogin.loginName.value; 
          var password = document.userlogin.loginPasswd.value; 

          if (name === null || name === "") { 
           alert("Please enter your username"); 
           document.userlogin.loginName.focus(); 
           return false; 
          } else if (password === null || password === "") { 
           alert("Please enter your password"); 
           document.userlogin.loginPasswd.focus(); 
           return false; 
          } 
         } 
        </script> 
        <form name="userlogin" method="POST" action="LoginServlet" onsubmit="return validateform2()"> 
         <h3>Customer Login with login name and login password</h3> 
         <p> To login, enter details below:</p> 
         <table cellspacing="8" border="0"> 
          <tr> 
           <td align="left"><p>Login name:</p></td><!-- --> 
           <td><input type="text" name="loginName" id="loginName"/></td> 
          </tr> 
          <tr> 
           <td align="left"><p>Login password:</p></td><!-- --> 
           <td><input type="password" name="loginPasswd" id="loginPasswd"/></td> 
          </tr> 
          <tr> 
           <td align="left"><input type="submit" value="userlogin" name="submit" style="width:75px" /><br /></td> 
           <td><input type="hidden" name="loginName" value="" /></td> 
          </tr> 
         </table> 
        </form> 
        <br /> 
        <form name="Form" action="CustomerServlet"> 
         <h3>New Customer registration</h3> 
         <p>To register, click on "register" below:</p> 
         <table cellspacing="8" border="0"> 
          <tr> 
           <td><input type="submit" value="register" name="submit" style="width:75px" /></td> 
          </tr> 
         </table> 
        </form> 
       </div> 
<div class="footer"><div align="center"><!-- ALIGNS EVERYTHING WITHIN DIV --> 
     <p>&copy; Copyright Scotia Island & Wildlife Cruises, Harbour Road, Morar, Invernessshire.</p> 
     <form> 
      <tr> 
       <td><input type="submit" value="home" name="submit" style="width:75px" /></td> 
      </tr><br /> 
     </form></div> 

</div><br /> 
</div> 
</body> 
</html> 

正如我的Javascript是新手,我需要一些幫助的工作,爲什麼預期兩個不同的形式和驗證腳本將無法正常工作。 (我有其他的JSP頁面帶有單個外部Javascript驗證腳本,它們都按預期工作)。 任何人都可以提出解決方案嗎?

+1

嘗試'focus()'使用'document.getElementById(「username」)。focus()'而不是'document.stafflogin.username.focus()' – Husam

+0

剛試過你的建議 - 沒有改變。它仍然跳過用戶名驗證。 –

回答

1

答案是從每個表單中刪除隱藏的輸入,例如。

<input type="hidden" name="username" value="" /> 

<input type="hidden" name="loginName" value="" /> 

這樣的形式是這樣的:

   <script type='text/javascript'> 
       function validateform1() { 
        'use strict'; 
        var username = document.stafflogin.username.value; 
        var password = document.stafflogin.password.value; 

        if (username === null || username === "") { 
         alert("Please enter the admin username"); 
         document.stafflogin.username.focus(); 
         return false; 
        } else if (password === null || password === "") { 
         alert("Please enter the admin password"); 
         document.stafflogin.password.focus(); 
         return false; 
        } else { 
         document.stafflogin.submit(); 
        } 
       } 
      </script> 
      <form name="stafflogin" action="CustomerServlet" onsubmit="return validateform1()"> 
       <h3>Staff Login with username and password</h3> 
       <p> To login, enter details below:</p> 
       <table cellspacing="8" border="0"> 
        <tr> 
         <td align="left"><p>Staff Username:</p></td> 
         <td><input type="text" name="username" id="username" required /></td> 
        </tr> 
        <tr> 
         <td align="left"><p>Staff Password:</p></td> 
         <td><input type="password" name="password" id="password" /></td> 
        </tr> 
        <tr> 
         <td align="left"><input type="submit" value="stafflogin" name="submit" style="width:75px" /></td> 
        </tr> 
       </table> 
      </form> 

這:

<script type='text/javascript'> 
       function validateform2() { 
        'use strict'; 
        var name = document.userlogin.loginName.value; 
        var password = document.userlogin.loginPasswd.value; 

        if (name === null || name === "") { 
         alert("Please enter your username"); 
         document.userlogin.loginName.focus(); 
         return false; 
        } else if (password === null || password === "") { 
         alert("Please enter your password"); 
         document.userlogin.loginPasswd.focus(); 
         return false; 
        } else { 
         document.userlogin.submit(); 
        } 
       } 
      </script> 
      <form name="userlogin" method="POST" action="LoginServlet" onsubmit="return validateform2()"> 
       <h3>Customer Login with login name and login password</h3> 
       <p> To login, enter details below:</p> 
       <table cellspacing="8" border="0"> 
        <tr> 
         <td align="left"><p>Login name:</p></td> 
         <td><input type="text" name="loginName" id="loginName"/></td> 
        </tr> 
        <tr> 
         <td align="left"><p>Login password:</p></td> 
         <td><input type="password" name="loginPasswd" id="loginPasswd"/></td> 
        </tr> 
        <tr> 
         <td align="left"><input type="submit" value="userlogin" name="submit" style="width:75px" /><br /></td> 
        </tr> 
       </table> 
      </form> 

總之有什麼不妥的JavaScript。