.net - permitir - deshabilitar un boton en c# asp net
Cómo deshabilitar la devolución de datos en un botón asp (12)
Tengo un botón asp. Es del lado del servidor, así que solo puedo mostrarlo para los usuarios que han iniciado sesión, pero quiero que ejecute una función de JavaScript y parece que cuando runat = "server" siempre llama al evento de devolución de datos.
También tengo un botón regular ( <input...
>) que no se ejecuta en el servidor y funciona bien ...
¿Cómo puedo hacer que este botón solo ejecute el javascript y no la devolución?
ASP.NET siempre genera asp:Button
como input type=submit
.
Si desea un botón que no hace una publicación, pero necesita algún control para el elemento en el lado del servidor, cree una entrada HTML simple con los atributos type=button
y runat=server
.
Si deshabilita las acciones de clic haciendo OnClientClick=return false
, no hará nada al hacer clic, a menos que cree una función como:
function btnClick() {
// do stuff
return false;
}
Además de la respuesta aceptada, puede usar UseSubmitBehavior = "false" MSDN
Con Validación
En este ejemplo utilicé dos controles, ddl
y txtbox
, tengo una codificación feliz
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>
Considera esto.
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
e.get_postBackElement().disabled = true;
}
</script>
En mi caso, resolví agregar retorno en onClientClick:
Código detrás
function verify(){
if (document.getElementById("idName").checked == "") {
alert("Fill the field");
return false;
}
}
Superficie de diseño
<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />
Haga que su javascript devuelva falso cuando haya terminado.
<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
Los otros tienen razón en que necesitas que tu devolución de llamada sea falsa; Sin embargo, me gustaría añadir que hacerlo al establecer el onclick es una manera fea de hacer las cosas. Recomiendo leer sobre JavaScript no intrusivo . Usar una biblioteca como jQuery podría hacerte la vida más fácil, y el código HTML menos acoplado a tu javascript (¡y jQuery ahora compatible con Microsoft !)
No dice qué versión de .NET Framework está utilizando.
Si está utilizando v2.0 o superior, puede usar la propiedad OnClientClick para ejecutar una función de Javascript cuando se activa el evento onclick del botón.
Todo lo que tiene que hacer para evitar que se produzca una devolución de datos del servidor es devolver false
desde la función llamada JavaScript.
Puede usar la acción de clic de jquery y usar la función preventDefault () para evitar la devolución de datos
<asp:button ID="btnMyButton" runat="server" Text="MyButton" />
$("#btnMyButton").click(function (e) {
// some actions here
e.preventDefault();
}
Puedes usar JQuery para esto
<asp:Button runat="server" ID="btnID" />
que en JQuery
$("#btnID").click(function(e){e.preventDefault();})
puedes usar el código:
<asp:Button ID="Button2" runat="server"
Text="Pulsa"
OnClientClick="this.disabled=true"
UseSubmitBehavior="False"/>
si 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>
YourButton.Attributes.Add("onclick", "return false");
o
<asp:button runat="server" ... OnClientClick="return false" />