HTML,Javascript和JSP:单击“提交”按钮时,表单不参与“操作”

时间:2011-04-20 14:45:18

标签: javascript jquery forms jsp el

我有一个“password_reset_status”JSP,它通过我的网络应用程序发送的电子邮件链接,以响应密码重置请求。 JSP能够显示3件事中的1件:

  • 如果链接中的重置代码与数据库中的重置代码匹配,则输入新密码的表单
  • 显示重置代码不正确的消息
  • 一条消息,指出发生了错误(没有用户重置代码,代码已过期,数据库连接问题等)

除了提交表单外,所有代码都有效。我在表单上有jQuery验证,在输入有效之前阻止提交。这是应该的。但是,当输入有效时(我知道它是有效的,因为我已将其定制为显示检查,并且x在有效和无效字段旁边,并且字段属性表明它们是有效的),它不会执行其“操作”如果它的任何javascript不是“alert()”属性(甚至不是带字符串的警报)!

我在我的网络应用程序中有其他表单的类似系统(唯一的区别是要验证的字段,以及调用发送数据的ajax函数),它们都表现得如此。但是,它们都在常规的html页面上。你认为问题可能是由于这是一个JSP吗?

以下是JSP正文的代码:

<!--The action normally contains an AJAX function that populates the text of "createNewPasswordStatusMessage", but the alert was put there for debugging purposes (it won't even launch the alert! -->


<body>

    <c:catch var="e">
        <c:choose>               
            <c:when test="${sessionScope.passwordResetStatus == applicationScope.passwordResetStates.passwordResetCodeCorrect}">
                <div id="content">
                    <h1 id="title"><!--Title of my web app--></h1>
                    <form id="createNewPasswordForm" action="javascript:alert(\"What is going on?\")" method="post">
                        <div class="formRows"> <label class="nameLabels" for="newPassword">New password:</label>        <input class="formFields" type="password" name="newPassword"/> </div>
                        <div class="formRows"> <label class="nameLabels" for="confirmNewPassword">Confirm:</label>      <input class="formFields" type="password" name="confirmNewPassword"/> </div>
                        <div class="formRows"> <input type="hidden" name="ID" value="${sessionScope.ID}"/></div>
                        <div class="formRows"> <input type="hidden" name="firstName" value="${sessionScope.firstName}"/></div>
                        <div class="formRows"> <input type="hidden" name="action" value="createNewPassword"/> </div>
                        <div class="formRows"> <input id="newPasswordFormSubmitButton" type="submit" value="Submit new password"/> </div>
                    </form>

                   <p id="createNewPasswordStatusMessage"></p>

                </div>
            </c:when>

            <c:when test="${sessionScope.passwordResetStatus == applicationScope.passwordResetStates.passwordResetCodeIncorrect}">
                <!-- Message stating that password is incorrect. Omitted for brevity. -->
            </c:when>
            <c:when test="${sessionScope.passwordResetStatus == applicationScope.passwordResetStates.passwordResetCodeExpired}">
                <!-- Message stating that reset code has expired or that an error may have occurred. Omitted for brevity. -->
            </c:when>
        </c:choose>
    </c:catch>
    <c:if test="${e!=null}">The caught exception is:
        <div id="content">
            <h1 id="title"><!--Title of my web app--></h1>
        <p id="statusMessage">"<c:out value="${e}" /></p>
        </div>
    </c:if>

</body>


我不想用文件的头部淹没人,其中包含javascript(在错误解决之后,它将被放入一个单独的javascript文件中)。验证javascript工作,而一个简单的警报没有,所以我认为它可能是表单的JSP代码。有人能指出我正确的方向吗?

修改

总结一下:

  • action =“(some url)”WORKS
  • action =“alert()”WORKS(显示IP 服务器)
  • action =“(任何其他javascript)”DOES 不工作

1 个答案:

答案 0 :(得分:1)

尝试使用

添加处理程序

$('#createNewPasswordForm').submit(callback)