如何在失败的表单验证后执行Javascript

时间:2011-08-23 13:44:42

标签: javascript jquery asp.net

我正在使用ASP.NET 3.5和jquery.hint.js插件。它工作得很好,有一个小问题。我在页面上有各种ASP.NET验证器,当页面无法验证时,客户端,包含提示文本的所有文本框现在都是空白的。这对最终用户来说很困惑,因为他们没有字段标签。要查看提示文本,他们必须单击进入和退出字段并重新填充。

不确定它是否有所不同,但这些字段包含在ASP.NET AJAX UpdatePanel中。更新面板的原因是为动态字段更新执行一些异步调用,例如根据您选择的国家/地区自动填充状态下拉列表。表格通过回发提交。

在客户端验证失败后,我需要一种方法来针对这些字段调用提示javascript。我怎么能这样做?

以下是针对页面上各个字段执行提示插件的客户端代码示例:

<script type="text/javascript">
    $(document).ready(function () {
        // Add handler function to UpdatePanel's events
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        PageLoad();
    });

    function PageLoad() {
        RetainState();
    }

    // This function handles the UpdatePanels' EndRequest event.
    function EndRequestHandler(sender, args) {
        if (args.get_error() == undefined) {
            RetainState();
        }
        else { // there was an error
            alert("There was an error" + args.get_error().message);
        }
    }

    function RetainState() {
        // Add hint to textboxes.
        $(":text").hint();
        $("textarea").hint();
    }
</script>

最后一件事:我以为我已经通过将以下代码添加到后面的代码中的Page_Load方法来解决了这个问题,但是如果之前有效,那么现在不是:

// This will call some javascript after a form validation fails
// and keep the hint text in the form fields.
if (!Page.ClientScript.IsOnSubmitStatementRegistered("KeepState"))
{
    string script = "RetainState()";
    Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "KeepState", script);
}

谢谢,

托德

0 个答案:

没有答案