页面刷新时,jquery客户端验证无法按预期工作[F5]

时间:2013-11-11 11:10:32

标签: c# jquery asp.net vb.net

我有以下客户端验证功能:

 <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)

这是按预期工作的。客户端获取Processed消息和clearForm(); 函数清除所有输入:文本控件。

问题是当你在browsert,或F5或CTRL + F5按下刷新按钮时 虽然表格已被清除,但表格会再次提交以前的值。

我用过这个:

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

要避免按F5键,但它一直无法正常工作。

如何避免重新提交表单。为什么浏览器缓存文本输入值 虽然控件正在被清除?

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解这个问题,在任何情况下,你是否试图在页面加载服务器端时进行检查?

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