我有一個「password_reset_status」JSP,通過電子郵件鏈接到我的Web應用程序爲響應密碼重置而發送的電子郵件請求。的JSP能夠顯示1 3的東西:HTML,Javascript和JSP:單擊提交按鈕時不從事「操作」的表單
- 甲形式,如果在該鏈路的復位碼相匹配的數據庫中的
- 一個消息,指出復位代碼是不正確的輸入新的密碼
- 一條消息,表明已發生錯誤(用於用戶無復位碼,碼已過期,數據庫連接問題等)
所有的代碼工作的,除提交表單。我有jQuery驗證的表單,防止提交,直到輸入有效。這按照它應該的方式工作。然而,當輸入有效時(我知道它是有效的,因爲我已經定製它來顯示檢查,x的有效和無效字段旁邊,並且字段屬性表明它們是有效的),但它不執行其「動作」屬性,如果它的任何JavaScript以外的「警報()」(甚至沒有一個字符串警報!)!
我有一個類似的系統爲我的網絡應用程序中的其他形式(唯一的區別是要驗證的字段,以及調用發送數據的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(後bug是解決它將被放入一個單獨的JavaScript文件)。驗證的JavaScript工作,而一個簡單的警報不,所以我認爲它可能是與表單的JSP代碼的東西。任何人都可以將我指向正確的方向嗎?
編輯
因此,要總結:
- 行動= 「(某些URL)」 的作品
- 行動= 「警報()」 的作品(顯示服務器的IP )
- action =「(任何其他javascript)」DOHER NOT WORK
有這個問題,你的處理程序是驗證插件還附加一個監聽器提交事件。那麼會發生什麼呢是兩個監聽器被同時執行(這導致表單被髮送而沒有首先被驗證)。 – Kevin 2011-04-20 14:50:08
那麼在驗證功能結束時執行send函數會不會更好?您可能想查看jQuerys推遲的api。 http://jqapi.com/#p=deferred.promise – babsher 2011-04-20 14:54:12
謝謝。這看起來是一個可能的解決方案......如果有人無法弄清楚爲什麼這種方式不起作用(因爲它應該!),我可能會走這條路。 – Kevin 2011-04-20 15:02:14