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();函数清除所有输入:文本控件。

问题是当您在 browsert 或 F5 或 CTRL + F5 上按刷新按钮时,尽管表单已被清除,但表单仍会使用先前的值再次提交。

我用这个:

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

避免按 F5 键,但它并非一直有效。

我怎样才能避免重新提交表格。为什么在清除控件时浏览器会缓存文本输入值?

4

1 回答 1

0

我不知道我是否理解问题,无论如何,您是否尝试在页面加载服务器端时进行检查?

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

于 2013-11-11T11:23:29.273 回答