不从服务器端立即调用Javascript函数

时间:2014-05-12 13:31:09

标签: asp.net

在按钮点击事件中,我调用了一个JS函数,但是在所有单击事件行都关闭后调用它。为什么以及如何解决这个问题?

我想要JS功能 - " ConfirmAcceptance"在执行服务器端功能之前,应首先调用并显示确认框警报 - " DoSomething"。

编辑:请注意,我有一些必须在服务器端点击事件上执行的验证(比如获取数据库值),并且基于此结果,我只能调用所需的JS确认框

服务器

protected void ApplyButton_Click(object sender, EventArgs e)
    {

            //Database values are fetched and these values are validated.
            if (validations are true)
            {
                Flag.Value = "true"; 
                break;
            }            

        if (Flag.Value == "false")
            ApplyRestrictionFlag();
        else
        {
            ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript: ConfirmAcceptance(); ", true);
            if(Accept.Value == "true")
                DoSomething();
        }

    }

客户端:

function ConfirmAcceptance()
{
    var accepted = confirm("Click OK to accept terms");
    if(accepted == true)
        Accept.Value = 'true';
}


<asp:Button ID="ApplyButton" runat="server" OnClick="ApplyButton_Click" Text="Apply"/>

<asp:HiddenField ID="Flag" runat="server" Value="false" />
    <asp:HiddenField ID="Accept" runat="server" Value="false" /> 

1 个答案:

答案 0 :(得分:1)

处理OnClientClick事件

function ConfirmAcceptance() {
    return confirm("Click OK to accept terms");
}

<asp:Button OnClientClick="return ConfirmAcceptance();" OnClick="ApplyButton_Click" />

这将确保首先运行客户端验证然后服务器验证。