0

createQuesAdd.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <script type="text/javascript">
            function show(){
                var myElement = document.getElementById('hideQ');
                myElement.style.display = '';
                hideQ();
            }
            function hideQ(){
                var myElement = document.getElementById('showQ');
                myElement.style.display = 'none';
            }
        </script>
    </head>
    <body>
        <form id="showQ" onsubmit="show();">Insert More Question?<input type="submit" value="Yes"/>
            <input type="button" value="No" onclick="window.location.href='Home.jsp';"/>
        </form>
        <form action="saveQuesAdd.do" method="post">
            <table id="hideQ" style="display: none;"> 
                <tr><td><input name="tableName" hidden="true" value="${requestScope.table_name}"/></td></tr>
                <tr><td>Question No.</td><td><input type="text" name="question_no"/></td></tr>
                <tr><td>Question:</td><td><textarea rows="3" cols="" name="question" ></textarea></td></tr>
                <tr><td>Option1:</td><td><input type="text" name="option1" /></td></tr> 
                <tr><td>Option2:</td><td><input type="text" name="option2" /></td></tr>
                <tr><td>Option3:</td><td><input type="text" name="option3" /></td></tr>
                <tr><td>Option4:</td><td><input type="text" name="option4" /></td></tr>
                <tr><td>Answer:</td><td><input type="text" name="answer" /></td></tr>   
                <tr><td><input type="submit" value="Create Database"/></td></tr>
            </table>
        </form>
    </body>
</html>

我来到这个页面,它有一个完全相同的表格。在至少一次进入数据库之后,用户被转发到这个页面并被询问他是否想要在数据库中进行更多的条目。问题是当单击“是”按钮时,表格会显示出来(我希望它在用户说之前被隐藏)并且不让我做任何事情并使用以前的条目提交自己!我得到一个 SQL 异常,说重复副本。为什么会自动提交?

4

2 回答 2

0
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script type="text/javascript">
    function show() {
        var myElement = document.getElementById('hideQ');
        myElement.style.display = '';
        hideQ();
        return false;
    }
    function hideQ() {
        var myElement = document.getElementById('showQ');
        myElement.style.display = 'none';
    }
</script>
</head>
<body>
<form id="showQ" onsubmit="return show()">
    Insert More Question?<input type="submit" value="Yes" />
    <input type="button" value="No" onclick="window.location.href='Home.jsp';" />
</form>
<form action="saveQuesAdd.do" method="post">
    <table id="hideQ" style="display: none;">
        <tr><td><input name="tableName" hidden="true"     value="${requestScope.table_name}" /></td></tr>
        <tr><td>Question No.</td><td><input type="text" name="question_no" /></td></tr>
        <tr><td>Question:</td><td><textarea rows="3" cols="" name="question">    </textarea></td></tr>
        <tr><td>Option1:</td><td><input type="text" name="option1" /></td></tr>
        <tr><td>Option2:</td><td><input type="text" name="option2" /></td></tr>
        <tr><td>Option3:</td><td><input type="text" name="option3" /></td></tr>
        <tr><td>Option4:</td><td><input type="text" name="option4" /></td></tr>
        <tr><td>Answer:</td><td><input type="text" name="answer" /></td></tr>
        <tr><td><input type="submit" value="Create Database" /></td></tr>
    </table>
    </form>
    </body>
     </html>

如上所示更新代码,它将正常工作:)

单击“是”按钮后,您只需显示 DIV 并发布表单,以便自动提交。

于 2013-08-04T05:19:28.530 回答
0

该页面不是自动提交的,当您单击“是”按钮时,您正在提交它。

您的“是”按钮是提交。当您单击它时,将调用 onsubmit 操作,这就是您看到包含 hideQ 表的表单的原因。由于您没有为“showQ”表单指定操作,因此它默认为当前文档根目录(到 createQuesAdd.jsp)。

我的建议是换行:

<form id="showQ" onsubmit="show();">Insert More Question?<input type="submit" value="Yes"/>

至:

<form id="showQ">Insert More Question?<input type="button" value="Yes" onclick="show();"/>

您实际上并没有尝试使用“是”按钮提交任何内容,因此您不希望它成为提交。

于 2013-08-04T05:21:30.927 回答