78 votos

Prevenir la forma de redirigir O actualizar en presentar?

He buscado a través de un montón de páginas, pero no puedo encontrar mi problema, así que he tenido que hacer un post.

Tengo un formulario que tiene un botón de enviar, y cuando se presentó a las que quiero NO actualizar O redirigir. Sólo quiero jQuery para realizar una función.

Aquí está el formulario:

<form id="contactForm">
        <fieldset>
        <label for="Name">Name</label>
        <input id="contactName" type="text" />
        </fieldset>

        <fieldset>
        <label for="Email">Email</label>
        <input id="contactEmail" type="text" />
        </fieldset>

        <fieldset class="noHeight">
        <textarea id="contactMessage" cols="20"></textarea>
        <input id="contactSend" class="submit" type="submit" onclick="sendContactForm()" />
        </fieldset>

    </form>        
    <small id="messageSent">Your message has been sent.</small>

Y aquí es el de jQuery:

function sendContactForm(){
                $("#messageSent").slideDown("slow");
                setTimeout('$("#messageSent").slideUp();$("#contactForm").slideUp("slow")', 2000);
           }

He probado con y sin un elemento de acción en el formulario, pero no sé qué estoy haciendo mal. Lo que me ha molestado más es que tengo un ejemplo que hace perfectamente: Ejemplo De La Página

Si quieres ver mi problema vivo, goto stormink.net (mi sitio) y retirar la barra lateral donde dice "envíame a mí y correo electrónico" y "Suscripción RSS". Ambas son formas que yo estoy tratando de conseguir que esto funcione.

160voto

CMS Puntos 315406

Simplemente gestionar el envío del formulario al presentar el evento, y devolver false:

$('#contactForm').submit(function () {
 sendContactForm();
 return false;
});

Usted no necesita más el evento onclick del botón enviar:

<input class="submit" type="submit" value="Send" />

16voto

karim79 Puntos 178055

Aquí:

function submitClick(e)
{
     e.preventDefault();
     $("#messageSent").slideDown("slow");
     setTimeout('$("#messageSent").slideUp();
     $("#contactForm").slideUp("slow")', 2000);
}

$(document).ready(function() {
    $('#contactSend').click(submitClick(e));
});

En lugar de utilizar el evento onClick, tendrás que usar enlazar un 'clic' controlador de eventos con jQuery para el botón de enviar (o lo que sea), que se llevará a submitClick como una devolución de llamada. Pasamos el caso de la devolución de llamada para llamar a preventDefault, que es lo que va a impedir que el clic de enviar el formulario.

11voto

Jesse Kochis Puntos 470

Parece que te falta un return false.

-4voto

Vikas Puntos 13

Esto es sólo un poco fuera de contexto, pero relacionados con la re-presentar en la actualización de la página e.g un formulario en el action="/hola" y method=post y el formulario es enviado al hacer clic en el botón enviar de tipo "submit"

En el controlador de una ha 1. storeHello() método con RequestMapping valor="/hola", RequestMethod.POST { de retorno "redirect:/hola"; } Y 2. getHello() método con RequestMapping valor="/hola", RequestMethod.OBTENER

Cuando el usuario haga 1 de presentar, storeHello() método será llamado. A partir de este método, uno tiene que redirigir a getHello() método del tipo de método de CONSEGUIR. así que cada vez hay método de actualización sólo getHello() será llamado en lugar de storeHello() con el tipo de post. Se evitará volver a enviar de forma.

Para evitar la forma de volver a presentar en la primavera de controlador de redirigir al método con la solicitud de asignación como "/hola" , RequestMethod.OBTENER utilizando de retorno "redirect:/hello" del método RequestMapping valor="/hola", RequestMethod.POST

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X