可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="return UserDeleteConfirmation();"
meta:resourcekey="BtnUserDeleteResource1" />
I have tried:
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?"))
return true;
else
return false;
}
and
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?")) {
__doPostBack(btnUserDelete, '');
}
return false;
}
And none of them works.
回答1:
Try this:
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="if ( ! UserDeleteConfirmation()) return false;"
meta:resourcekey="BtnUserDeleteResource1" />
This way the "return" is only executed when the user clicks "cancel" and not when he clicks "ok".
By the way, you can shorten the UserDeleteConfirmation function to:
function UserDeleteConfirmation() {
return confirm("Are you sure you want to delete this user?");
}
回答2:
There are solutions here that will work, but I don't see anyone explaining what is actually happening here, so even though this is 2 years old I'll explain it.
There is nothing "wrong" with the onclientclick javascript you are adding. The problem is that asp.net is adding it's on onclick stuff to run AFTER whatever code you put in there runs.
So for example this ASPX:
<asp:Button ID="btnDeny" runat="server" CommandName="Deny" Text="Mark 'Denied'" OnClientClick="return confirm('Are you sure?');" />
is turned into this HTML when rendered:
<input name="rgApplicants$ctl00$ctl02$ctl00$btnDeny" id="rgApplicants_ctl00_ctl02_ctl00_btnDeny"
onclick="return confirm('Are you sure?');__doPostBack('rgApplicants$ctl00$ctl02$ctl00$btnDeny','')" type="button" value="Mark 'Denied'" abp="547">
If you look closely, the __doPostBack stuff will never be reached, because the "confirm" will always return true/false before __doPostBack is reached.
This is why you need to have the confirm only return false and not return when the value is true. Technically, it doesn't matter if it returns true or false, any return in this instance would have the effect of preventing the __doPostBack from being called, but for convention I would leave it so that it returns false when false and does nothing for true.
回答3:
You can put the above answers into one line like this. And you don't need to write the function.
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click" meta:resourcekey="BtnUserDeleteResource1"
OnClientClick="if ( !confirm('Are you sure you want to delete this user?')) return false;" />
回答4:
Using jQuery UI dialog:
SCRIPT:
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
$(function () {
$("#<%=btnUserDelete.ClientID%>").on("click", function (event) {
event.preventDefault();
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
__doPostBack($('#<%= btnUserDelete.ClientID %>').attr('name'), '');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
});
</script>
HTML:
<div id="dialog-confirm" style="display: none;" title="Confirm Delete">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Are you sure you want to delete this user?</p>
</div>
回答5:
try this :
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
onClientClick=" return confirm('Are you sure you want to delete this user?')"
OnClick="BtnUserDelete_Click" meta:resourcekey="BtnUserDeleteResource1" />
回答6:
The code is like this:
In Aspx:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CausesValidation=true />
in Cs:
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
btnSave.Attributes["Onclick"] = "return confirm('Do you really want to save?')";
}
}
protected void btnSave_Click(object sender, EventArgs e){
Page.Validate();
if (Page.IsValid)
{
//Update the database
lblMessage.Text = "Saved Successfully";
}
}
回答7:
try this :
OnClientClick="return confirm('Are you sure ?');"
Also set : CausesValidation="False"
回答8:
Try this:
<asp:Button runat="server" ID="btnDelete" Text="Delete"
onClientClick="javascript:return confirm('Are you sure you want to delete this user?');" OnClick="BtnDelete_Click" />
回答9:
This is a simple way to do client-side validation BEFORE the confirmation.
It makes use of the built in ASP.NET validation javascript.
<script type="text/javascript">
function validateAndConfirm() {
Page_ClientValidate("GroupName"); //'GroupName' is the ValidationGroup
if (Page_IsValid) {
return confirm("Are you sure?");
}
return false;
}
</script>
<asp:TextBox ID="IntegerTextBox" runat="server" Width="100px" MaxLength="6" />
<asp:RequiredFieldValidator ID="reqIntegerTextBox" runat="server" ErrorMessage="Required"
ValidationGroup="GroupName" ControlToValidate="IntegerTextBox" />
<asp:RangeValidator ID="rangeTextBox" runat="server" ErrorMessage="Invalid"
ValidationGroup="GroupName" Type="Integer" ControlToValidate="IntegerTextBox" />
<asp:Button ID="SubmitButton" runat="server" Text="Submit" ValidationGroup="GroupName"
OnClick="SubmitButton_OnClick" OnClientClick="return validateAndConfirm();" />
Source: Client Side Validation using ASP.Net Validator Controls from Javascript
回答10:
Try this:
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Your asking")) {
confirm_value.value = "Yes";
document.forms[0].appendChild(confirm_value);
}
else {
confirm_value.value = "No";
document.forms[0].appendChild(confirm_value);
}
}
In Button call function:
<asp:Button ID="btnReprocessar" runat="server" Text="Reprocessar" Height="20px" OnClick="btnReprocessar_Click" OnClientClick="Confirm()"/>
In class .cs call method:
protected void btnReprocessar_Click(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
}
}