HTML, Javascript и JSP: форма не участвует в «действии» при нажатии кнопки «Отправить» - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть JSP "password_reset_status", с которым связано электронное письмо, которое мое веб-приложение отправляет в ответ на запрос сброса пароля.JSP может отображать 1 из 3 вещей:

  • Форма для ввода нового пароля, если код сброса в ссылке совпадает с кодом в базе данных
  • Сообщение о том, чтоневерный код сброса
  • Сообщение о том, что произошла ошибка (нет кода сброса для пользователя, код истек, проблемы с подключением к базе данных и т. д.)

Весь код работает,кроме представления формы.У меня есть проверка JQuery на форме, которая запрещает отправку до тех пор, пока ввод действителен.Это работает так, как должно.Однако, когда входные данные действительны (я знаю, что они действительны, потому что я настроил их для отображения проверок и х рядом с действительными и недействительными полями, а атрибуты полей указывают, что они действительны), он не выполняет свое «действие»атрибут, если это какой-либо 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 = "(некоторый URL)" РАБОТАЕТ
  • action = "alert ()" РАБОТАЕТ (отображает IP-адрес сервера)
  • action = "(любой другой JavaScript)" НЕ РАБОТАЕТ

1 Ответ

1 голос
/ 20 апреля 2011

Попробуйте добавить свой обработчик, используя

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

...