2010-09-13 10 views
10

Estoy tratando de usar el complemento jquery validation pero mi formulario está en el panel de actualización. Entonces, incluso después de aplicar la validación al enviar el formulario, lo valida y muestra el mensaje requerido por apenas 2 segundos y luego envía el formulario.
¿Cuál es la solución para esto?Validación de jquery y actualización del panel juntos

He intentado esto también.

<asp:UpdatePanel ID="AddUserPanel" runat="server" 
      ChildrenAsTriggers="false" 
      UpdateMode="Conditional"> 

Pero esto tampoco parece ayudar.

+0

¿Qué complemento de validación? – Hawxby

+0

@Hawxby: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – naveen

+0

Los paneles de actualización son un juguete brillante para el nuevo tipo desprevenido. Sugiero encarecidamente que descubras AJAX :) (sin embargo, tengo la respuesta y extraeré el código del lugar en el que lo perdí deliberadamente una vez que descubrí AJAX) –

Respuesta

0

necesita devolver falsa y detener la propagación de eventos en el onsubmit, algo como esto:

$("form").submit(function (e) { 
    e.preventDefault(); 
    return(false); 
}); 

Sin embargo no sé nada acerca de ASP, por lo que no sé si eso va a ayudar en este caso particular.

Quizás necesite usar .live o volver a conectar el controlador después de que se haya cargado el contenido de este panel, por lo que los eventos de publicación directa están vinculados a él?

0

Asp.net WebForms utiliza la función __doPostback() que envía su formulario.

Esto es lo que haría:

  1. forma Comprobar presentar ejecución para ver si las cosas funciona como se espera por lo que ocurra primero validación (que estoy bastante seguro de que lo hace porque lo hace llegar hasta esos mensajes) y verifica el código de cada parte individual.

  2. Si la validación no impide la ejecución de eventos predeterminado (burbujeo) por cualquiera de regresar false de llamar preventDefault() o ambos, entonces se debe cambiar para trabajar suficientemente con ASP.NET Web Forms.

  3. Si todo parece estar bien en el frente de validación, debe cambiar su función __doPostback(). Sí suena hackish sí, pero a veces cosas como esto tienen que hacerse. Copie el código existente y agregue comprobaciones adicionales. Nada de que preocuparse.

También verifique esto Stackoverflow question.

Oh infierno. Sólo hacer una búsqueda en Google sobre este e incluir sólo los resultados stackoverflow: jQuery validation webforms site:stackoverflow.com

2

Si su uso de un gestor de secuencia de comandos que necesita el código de l33t a continuación:

$(function() { 
//Code that runs before update panel is fired. 

     //Listen for update panel 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
     //Re-initialize jquery after an auto post back. 
     function EndRequestHandler(sender, args) { 
      //Do work after update panel fires. 
     } 
    }); 

Así que básicamente tiene código duplicado, código fuera de la EndRequestHandler() y dentro de él.

0

Si no recuerdo mal, puede usar un botón normal en lugar del botón asp: que no provocará una devolución de datos. Si este es el caso, entonces puede usar JavaScript para actualizar el UpdatePanel.

Cuestiones relacionadas