0

我有一个简单的 JS 弹出"are you sure..." 窗口,以及一个下拉列表和asp:button. 当我单击按钮时,我想要的是收到此消息:

"Are you sure you want to perform <%= ACTION %>?"

其中 ACTION 是来自 dropdownlist.SelectedItem.Text 的字符串。

以下似乎不起作用:

OnClientClick="return confirm('Are you sure you want to perform <%= ACTION %>? );

它实际上只是打印<%= ACTION %>而不是值。

我也试过:

function testMe() {
    return confirm('Are you sure you want to perform ' + document.getElementById('<%= hfAction.ClientID %>').value + '?');
}

OnClientClick="testMe();"

但无论点击cancel或,以上都会导致回发OK

哪个是正确的用法?

4

3 回答 3

2

您不能在服务器控件声明中使用服务器标签。初始化对象时,在后面的代码中设置 OnClientClick 脚本。

mybutton.OnClientClick 
    = string.format("return confirm('Are you sure you want to perform {0}?');", ACTION);
于 2012-07-19T12:51:38.537 回答
2

试试这个:

<asp:DropDownList runat="server" ID="ACTION">
    <asp:ListItem>Action 1</asp:ListItem>
    <asp:ListItem>Action 2</asp:ListItem>
</asp:DropDownList>

<script type="text/javascript">
    function ExecuteConfirm() {
        var ddlId = '<%= ACTION.UniqueID %>';
        var action = $("#" + ddlId + " option:selected").text();
        return confirm('Are you sure you want to perform ' + action + ' ?');
    }
</script>

<asp:Button runat="server" Text="Button" OnClientClick="return ExecuteConfirm();" />
于 2012-07-19T13:48:38.490 回答
1

对不起,我的最后一个答案是完全垃圾(在发布之前没有想到)。这个怎么样(你几乎是对的)?

function testMe() {
    var val = document.getElementById('<%= hfAction.ClientID %>').value;
    return confirm('Are you sure you want to perform ' + val + '?');
}

OnClientClick="return testMe();"

您只是错过了 OnClientClick 的回报。

于 2012-07-19T13:56:15.547 回答