首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSP页面表单验证:2个表单和2个脚本

JSP页面表单验证:2个表单和2个脚本
EN

Stack Overflow用户
提问于 2017-04-03 10:55:15
回答 1查看 102关注 0票数 1

我的JSP页面中有两个表单,应该由两个嵌入式JS脚本进行验证(参见下面的代码)。问题是脚本不能正常工作,并且忽略了第一个条目(用户名和loginName )的验证。我有两个外部Javascript文件来进行验证,但也有类似的问题。

代码语言:javascript
复制
    <!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的新手,我需要一些帮助来理解为什么两个单独的表单和验证脚本不能像预期的那样工作。(我有其他带有单个外部Javascript验证脚本的JSP页面,它们都按预期工作)。有人能提出解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 19:14:49

答案是从每个表单中删除隐藏的输入。

代码语言:javascript
复制
<input type="hidden" name="username" value="" />

代码语言:javascript
复制
<input type="hidden" name="loginName"  value="" />

表格看起来是这样的:

代码语言:javascript
复制
                <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>

这是:

代码语言:javascript
复制
<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没有什么问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43182775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档