【问题标题】:jquery client side validation not working as expected when page refreshed [F5]页面刷新时 jquery 客户端验证无法按预期工作 [F5]
【发布时间】:2013-11-11 11:10:31
【问题描述】:

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

 <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 键但它不是一直工作。

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

【问题讨论】:

  • 这是 asp.net 表单网站上的常见行为,因为每次交互都是服务器 POST。当您刷新浏览器时,会尝试刷新最后一个操作,遗憾的是这是一个 POST。

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


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2013-04-30
  • 1970-01-01
相关资源
最近更新 更多