2011-01-28 58 views
5
protected void btnNext_Click(object sender, EventArgs e) 
    { 
     btnNext.InnerHtml = "CLICK"; 
    } 

    <button type="submit" runat="server" onserverclick="btnNext_Click" id="btnNext">Next &gt;</button> 

Esto funciona bien, pero cuando agrego un evento onclick:botón ASP.net OnServerClick sólo funciona cuando onclick no se define

<button type="submit" runat="server" onserverclick="btnNext_Click" onclick="return checkForm();" id="btnNext">Next &gt;</button> 

Y en la cabeza:

<script type="text/javascript"> 

    function checkForm() { 

     if (document.getElementById("<%=lstChooseSpec.ClientID %>").value) { 
      return true; 
     } else { 
      $.jGrowl("<strong>Warning!</strong><br />Please select an item", { sticky: true }); 
      return false; 
     } 
    } 
</script> 

Envía el formulario, pero no cambia el texto de los botones a 'CLIC'. El texto solo cambia a 'CLIC' cuando el onclick() no está definido, ¡aunque el formulario todavía se está enviando!

+7

¿Hay algún motivo por el que no pueda usar un en lugar de un

Respuesta

7

La razón por la que se está viendo esto es porque cuando se tiene tanto en un botón que se ejecuta en el controlador click seguido por el __doPostBack function por lo que el onclick se vería algo como esto

onclick="return checkForm(); __doPostBack('btnNext','')

Así como se puede ver que __doPostBack, que realmente establece a qué función de servidor llamar, nunca se llama. Sin embargo, dado que el botón es de tipo enviar, el formulario aún se envía de vuelta al servidor.

7

intento sin 'retorno': <button type="submit" runat="server" onserverclick="btnNext_Click" onclick="checkForm();" id="btnNext">Next &gt;</button>
O si quería checkForm() para controlar si se debe mostrar o no - hacer como esto:

onclick="if (!checkForm()) return;" 
+0

Este enfoque funciona. – bdoshi

+0

Gracias, Esto funcionó para mí – Tiber

+0

Cambiar el "retorno" a "devolver falso" y funcionó para mí. Gracias. –

0

Prueba esto:

onclick="javascript:if (!validaForm()) return false;" 

funcionó para mí.

Cuestiones relacionadas