我有一个简单的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
,上述内容都会导致回发。
哪种用法正确?
答案 0 :(得分:2)
您不能在服务器控件声明中使用服务器标签。初始化对象时,在代码中设置OnClientClick脚本。
mybutton.OnClientClick
= string.format("return confirm('Are you sure you want to perform {0}?');", ACTION);
答案 1 :(得分: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();" />
答案 2 :(得分:1)
抱歉,我的最后一个答案是完全垃圾(在发布之前没想到)。这个怎么样(你几乎是对的)?
function testMe() {
var val = document.getElementById('<%= hfAction.ClientID %>').value;
return confirm('Are you sure you want to perform ' + val + '?');
}
OnClientClick="return testMe();"
你错过了OnClientClick的回报。