У меня есть кнопка asp. Это серверная сторона, поэтому я могу показать ее только для зарегистрированных пользователей, но я хочу, чтобы она запускала функцию javascript, и кажется, что когда она runat = "сервер", она всегда вызывает событие postback.
У меня также есть регулярная кнопка (<input...
> ), не работающая на сервере, и она отлично работает...
Как я могу заставить эту кнопку запускать javascript, а не postback?
Пусть ваш javascript вернет false, когда это будет сделано.
<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
YourButton.Attributes.Add("onclick", "return false");
или
<asp:button runat="server" ... OnClientClick="return false" />
Вы можете использовать действие jquery click и использовать функцию preventDefault(), чтобы избежать обратной передачи
<asp:button ID="btnMyButton" runat="server" Text="MyButton" />
$("#btnMyButton").click(function (e) {
// some actions here
e.preventDefault();
}
Рассмотрим это.
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
e.get_postBackElement().disabled = true;
}
</script>
Другие правы, что вам нужен ваш обратный вызов для возврата false; однако я хотел бы добавить, что делать это, устанавливая onclick - уродливый старый способ делать что-то. Я бы рекомендовал прочитать ненавязчивый javascript. Использование библиотеки типа jQuery может облегчить вашу жизнь, а HTML меньше связан с вашим javascript (и jQuery поддерживаемый Microsoft!)
ASP.NET всегда генерирует asp:Button
как input type=submit
.
Если вы хотите кнопку, которая не делает сообщение, но для элемента на стороне сервера требуется некоторый элемент управления, создайте простой ввод HTML с атрибутами type=button
и runat=server
.
Если вы отключите действия с кликом, сделав OnClientClick=return false
, он ничего не сделает по щелчку, если вы не создадите такую функцию, как:
function btnClick() {
// do stuff
return false;
}
Вы не говорите, какую версию используемой платформы .NET вы используете.
Если вы используете v2.0 или выше, вы можете использовать свойство OnClientClick для выполнения функции Javascript при поднятии кнопки onclick.
Все, что вам нужно сделать, чтобы предотвратить последующий возврат сервера, - это возврат false
из вызываемой функции JavaScript.
вы можете использовать код:
<asp:Button ID="Button2" runat="server"
Text="Pulsa"
OnClientClick="this.disabled=true"
UseSubmitBehavior="False"/>
если nee submit
...
<form id="form1" runat="server" onsubmit="deshabilita()">
...
<script type="text/javascript">
function deshabilita()
{
var btn = "<%= Button1.ClientID %>";
if (confirm("Confirme postback"))
{
document.getElementById(btn).disabled = true;
return true;
}
return false;
}
</script>
В моем случае я решил добавить return в onClientClick:
function verify(){
if (document.getElementById("idName").checked == "") {
alert("Fill the field");
return false;
}
}
<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />
OnClick
после этого.
С проверкой
В этом примере я использовал два элемента управления ddl
и txtbox
, имеет счастливое кодирование
asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager
asp:UpdatePanel ID="Panel1" runat="server"
ContentTemplate
// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"
/ContentTemplate
/asp:UpdatePanel
<script type="text/javascript">
function Valid() {
if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
alert("Please select YOUR TEXT");
$("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
return false;
}
if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
alert("Please Type YOUR TEXT");
$("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
return false;
}
return true;
}
</script>
дополнительно для принятого ответа вы можете использовать UseSubmitBehavior = "false" MSDN
__doPostBack(
до конца скрипта клика клиента.
Вы можете использовать JQuery для этого
<asp:Button runat="server" ID="btnID" />
чем в JQuery
$("#btnID").click(function(e){e.preventDefault();})
OnClientClick="myfunction(); return false;"
для JavaScript