簡體   English   中英

HTML,Javascript和JSP:單擊提交按鈕時,表單不參與“操作”

[英]HTML, Javascript, and JSP: Form not engaging in “action” when submit button is clicked

我有一個“ password_reset_status” JSP,該JSP通過我的Web應用程序響應密碼重置請求發送的電子郵件鏈接到。 JSP能夠顯示3件事之一:

  • 如果鏈接中的重置代碼與數據庫中的密碼匹配,則輸入新密碼的表單
  • 一條消息,指出重置代碼不正確
  • 一條消息,指出已發生錯誤(用戶沒有重置代碼,代碼過期,數據庫連接問題等)

除提交表單外,所有代碼均有效。 我在表單上進行jQuery驗證,以防止在輸入有效之前提交。 那按預期工作。 但是,當輸入有效時(我知道它是有效的,因為我已對其進行了自定義以在有效字段和無效字段旁邊顯示檢查和x,並且字段屬性表明它們是有效的),它不會執行其“操作”屬性,如果其不是“ alert()”(甚至不是帶有字符串的警報)的任何Javascript!

對於我的Web應用程序中的其他表單,我有一個類似的系統(唯一的區別是要驗證的字段以及調用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 =“(某些網址)”的作品
  • action =“ alert()”作品(顯示服務器的IP)
  • action =“(其他任何javascript)”無效

嘗試使用添加處理程序

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM