根据单击的提交按钮分配不同的Onclicks

时间:2016-07-15 14:37:43

标签: javascript jquery html asp.net

我有一个asp.net表单,其中包含3个按钮,用于触发点击按钮的相关模式以及用户输入详细信息。目前每个模式都有OnClick个把我的代码带到后面。

我正在努力实现一个成功模式,以便在“提交”时显示。点击每个模态。

我希望只有我所有三个人共享的成功模式。我有点工作,因为初始模态关闭,然后显示我的成功模态,但它不会写入我的数据库。

如果我在我的成功模式中将OnClick添加到我的按钮之一,它会发布到我的数据库中,因此我想我需要一些方法,添加一个{{1}我的关闭'成功模态按钮,但我需要使用正确的OnClick填充,具体取决于首次选择的按钮。

当前代码

数据输入模式提交按钮

OnClick

成功模态关闭按钮

<asp:Button CssClass="btn btn-success" ID="btnSubmitNewFunc" runat="server" Text="Submit" ToolTip="Click to submit your request." data-toggle="modal" data-target="#modalSuccess" data-backdrop="static" data-keyboard="false" data-dismiss="modal" OnClick="btnSubmitNewFunc_Click" />
<asp:Button CssClass="btn btn-success" ID="btnSubmitBug" runat="server" Text="Submit" ToolTip="Click to submit your request." data-toggle="modal" data-target="#modalSuccess" data-backdrop="static" data-keyboard="false" data-dismiss="modal" OnClick="btnSubmitBug_Click" />
<asp:Button CssClass="btn btn-success" ID="btnSubmitNewPlace" runat="server" Text="Submit" ToolTip="Click to submit your request." data-toggle="modal" data-target="#modalSuccess" data-backdrop="static" data-keyboard="false" data-dismiss="modal" OnClick="btnSubmitNewPlace_Click" />

1 个答案:

答案 0 :(得分:1)

如果要在单击btnModalSuccess时提交数据,可以先将原始命令名保存在隐藏字段中:

<asp:HiddenField ID="hiddenCommand" runat="server" />
<asp:Button ID="btnSubmitNewFunc" ... OnClientClick="return showSuccess('NewFunc');" />
<asp:Button ID="btnSubmitBug" ... OnClientClick="return showSuccess('Bug');" />
<asp:Button ID="btnSubmitNewPlace" ... OnClientClick="return showSuccess('NewPlace');" />

借助此Javascript实用程序功能:

function showSuccess(cmd) {
    $('#hiddenCommand').val(cmd); 
    $('#modalsuccess').modal('show');
    return false; // To prevent the postback
}

btnModalSuccess的事件处理程序中,处理将取决于存储在隐藏字段中的命令:

protected void btnModalSuccess_Click(object sender, EventArgs e)
{
    switch (hiddenCommand.Value)
    {
        case "NewFunc":
            ProcessNewFunc();
            break;

        case "Bug":
            ProcessBug();
            break;

        case "NewPlace":
            ProcessNewPlace();
            break;
    }
}

<小时/> 话虽这么说,我可能会建议您先将数据发布到服务器,然后显示Success模式。否则,用户可以看到成功模式并关闭浏览器而不单击btnModalSuccess,从而阻止数据保存到数据库。

在代码隐藏中看起来像这样:

protected void btnSubmitNewFunc_Click(object sender, EventArgs e)
{
    // Save data to DB here
    ...
    ShowSuccessModal();
}

protected void btnSubmitBug_Click(object sender, EventArgs e)
{
    // Save data to DB here
    ...
    ShowSuccessModal();
}

protected void btnSubmitNewPlace_Click(object sender, EventArgs e)
{
    // Save data to DB here
    ...
    ShowSuccessModal();
}

private void ShowSuccessModal()
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowSuccess", "$('#modalsuccess').modal('show');", true);
}

按钮btnModalSuccess只会在不引起回发的情况下解除模态:

<asp:Button ID="btnModalSuccess" runat="server" Text="Close" ... OnClientClick="$('#modalsuccess').modal('hide'); return false;" />