如何在onclick之后调用onclientlick

本文关键字:调用 onclientlick 之后 onclick | 更新日期: 2023-09-27 18:21:02

我有这个按钮

<asp:Button runat="server" ID="btnReviewDocs" CssClass="btnReviewDocs" data-theme="b"
                Text="Review Documents" OnClick="btnReviewDocs_Click" OnClientClick="clickHyperlink();"/>

在"OnClick"事件中,我正在组装一个URL,我需要将其设置为asp:Hyperlink,在"OnClick"的末尾,我将此URL设置为"asp:Hyperlink"的"NavigateURL"属性。一旦"asp:Hyperlink"有了正确的URL,我需要调用"clickHyperlink()"函数。

function clickHyperlink() {
    var href = $('#hlnkID').attr('href');
    if (typeof href !== "undefined") {
        $.mobile.showPageLoadingMsg();
        window.location.href = href;
    }
}

但是"OnClientClick"事件总是在"OnClick"之前执行。有什么解决办法的建议吗?

我正在做所有这些事情,因为我在JQuery Mobile和"Response.RRedirect(url);"方面遇到了问题正在更改页面,但未更改URL。

如何在onclick之后调用onclientlick

我相信您实际上不需要在JS部分中涉及Hyperlink控件。修改JS函数并从btnReviewDocs按钮中删除OnClientClick属性:

<script type="text/javascript">
    function clickHyperlink(href) {
        $.mobile.showPageLoadingMsg();
        window.location.href = href;
    }
</script>

在服务器上,在btnReviewDocs_Click方法中:

protected void btnReviewDocs_Click(object sender, EventArgs e)
{
    // TODO: set the url, maybe append some params to the 
    // hlnkID.NavigateUrl value
    var url = "http://stackoverflow.com/";
    ClientScript.RegisterStartupScript(Page.GetType(), 
        "clickHyperlink",
        "clickHyperlink('" + url + "');",
        true);
}

使用ClientScript对象中的RegisterStartupScript在回发后运行代码--->

protected void btn_Click(object sender, EventArgs e)
    { 
        //some code    
        this.ClientScript.RegisterStartupScript(this.GetType(), "clintClick", "clickHyperlink", true);
    }

尝试这个

    protected void btnReviewDocs_Click(object sender, EventArgs e)
    { 
        //something doing here
        Page.ClientScript.RegisterStartupScript(this.GetType(), "test", "<script type='text/javascript'>clickHyperlink()</script>");//call javascript function
    }

@Alex Filippovici提到了答案。

但首先你应该问问自己,你真的需要回到客户端进行重定向吗?

为什么不打电话:

Response.Redirect("MyURL");