Подтвердить обратную передачу Кнопка OnClientClick ASP.NET
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="return UserDeleteConfirmation();"
meta:resourcekey="BtnUserDeleteResource1" />
Я пробовал:
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?"))
return true;
else
return false;
}
и
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?")) {
__doPostBack(btnUserDelete, '');
}
return false;
}
И никто из них не работает.
Ответы
Ответ 1
Попробуйте следующее:
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="if ( ! UserDeleteConfirmation()) return false;"
meta:resourcekey="BtnUserDeleteResource1" />
Таким образом, "возврат" выполняется только тогда, когда пользователь нажимает "отменить", а не когда он нажимает "ok".
Кстати, вы можете сократить функцию UserDeleteConfirmation до:
function UserDeleteConfirmation() {
return confirm("Are you sure you want to delete this user?");
}
Ответ 2
Есть решения, которые будут работать, но я не вижу, чтобы кто-то объяснял, что на самом деле происходит здесь, поэтому, хотя мне 2 года, я объясню это.
Нет ничего "неправильного" в добавляемом javascript onclientclick. Проблема заключается в том, что asp.net добавляет его в onclick, чтобы запускать ПОСЛЕ любого кода, который вы там помещаете.
Итак, например, этот ASPX:
<asp:Button ID="btnDeny" runat="server" CommandName="Deny" Text="Mark 'Denied'" OnClientClick="return confirm('Are you sure?');" />
превращается в этот HTML при визуализации:
<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">
Если вы посмотрите внимательно, материал __doPostBack никогда не будет достигнут, потому что "confirm" всегда будет возвращать true/false до достижения __doPostBack.
Вот почему вам нужно подтвердить только возврат false, а не возврат, когда значение равно true. Технически, не имеет значения, вернет ли он true или false, любое возвращение в этом случае могло бы привести к тому, что вызов __doPostBack не будет вызван, но для соглашения я оставил бы его так, чтобы он возвращал false, когда false, и ничего не делает для true.
Ответ 3
Вы можете поместить вышеуказанные ответы в одну строку следующим образом. И вам не нужно писать функцию.
<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
Использование диалогового окна пользовательского интерфейса jQuery:
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
Код выглядит следующим образом:
В Aspx:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CausesValidation=true />
в 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";
}
}
Ответ 6
попробуйте следующее:
<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" />
Ответ 7
попробуйте следующее:
OnClientClick="return confirm('Are you sure ?');"
Также установите: CausesValidation="False"
Ответ 8
Попробуйте следующее:
<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
Это простой способ сделать проверку на стороне клиента до подтверждения.
Он использует встроенный javascript для проверки ASP.NET.
<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();" />
Источник: Проверка на стороне клиента с помощью элементов управления ASP.Net Validator из Javascript
Ответ 10
Попробуйте следующее:
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);
}
}
В функции вызова кнопки:
<asp:Button ID="btnReprocessar" runat="server" Text="Reprocessar" Height="20px" OnClick="btnReprocessar_Click" OnClientClick="Confirm()"/>
В методе вызова класса .cs:
protected void btnReprocessar_Click(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
}
}