Проверка на стороне клиента jquery не работает должным образом при обновлении страницы [F5]

0

У меня есть следующая функция для проверки на стороне клиента:

 <script type="text/javascript">

        $(function () {

            document.onkeydown = function () {
                if (event.keyCode == 116) {
                    event.keyCode = 0;
                    event.returnValue = false;
                }
            }


            $("#btnEnviar").click(function () {

                $("#cerrarPopup").click(addHandlerCloseModal);

                var msg = "";
                if ($("#txtNombre").val() == "") { msg += "El nombre es un campo obligatorio <br/>"; };
                if ($("#txtTelefono").val() == "" ||
                   !$.isNumeric($("#txtTelefono").val()) ||
                    $("#txtTelefono").val().length != 9) {
                    msg += "Introduzca un teléfono válido de 9 posiciones. <br/>";
                };

                if (msg != "") {
                    doModal(msg);
                    return false;
                }

                if (!$('#chkClausulas').prop("checked")) {
                    msg = "No ha aceptado las condiciones legales";
                    doModal(msg);
                    return false;
                }

                //$("#span1").html('');

                return true;
            });

        });

        function doModal(obj) {
            $("#spanMsg").each(function () {
                $(this).html(obj);
            });
            $("#divModal").modal();
        }

        function clearForm() {
            $("#rightContent input:text").val('');
            $('#chkClausulas').attr("checked", false);
        }

        function addHandlerCloseModal() {           
                $.modal.close();           
        }

    </script>

И затем, при проверке на стороне сервера, я обрабатываю запрос и показываю модальное сообщение, которое подтверждает, что запрос был успешным.

Dim msgScript As String = "<script type='text/javascript'>" & _
        "$('#span1').html('');clearForm();doModal('#msg#'); " & _
         "$('#cerrarPopup').click(function () { $.modal.close(); }); " &
        "</script>"

  ScriptManager.RegisterStartupScript(Me, Me.GetType, "doModal", _
                                        msgScript.Replace("#msg#", outMsg), False)

Это работает как ожидалось. Клиент получает обработанное сообщение и clearForm(); функция очищает все входные данные: текстовые элементы управления.

Проблема заключается в том, что когда вы нажимаете кнопку обновления в браузере или F5 или CTRL + F5, форма снова представляется с предыдущими значениями, хотя формы были удалены.

Я использовал это:

   document.onkeydown = function () {
                if (event.keyCode == 116) {
                    event.keyCode = 0;
                    event.returnValue = false;
                }
            }

Чтобы избежать нажатия клавиши F5, но она не работает все время.

Как я могу избежать повторного представления формы. Почему кеширование браузера вводит значения ввода, хотя элементы управления очищаются?

  • 0
    Это обычное поведение на сайтах форм asp.net, потому что каждое взаимодействие является POST-сервером. При обновлении браузер пытается обновить последнее действие, которое, к сожалению, является POST.
Теги:

1 ответ

0

Я не знаю, понимаю ли я проблему, в любом случае, вы пытались поставить чек, когда страница загружает сервер?

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback%28v=vs.110%29.aspx

  • 0
    Потому что мне не нужно проверять загрузку страницы. Это ничего не загружает. Проблема в том, что F5 запускает кнопку отправки
  • 0
    Могу ли я помочь по этой ссылке stackoverflow.com/questions/14707602/… ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню