redirección después .submit() formulario

Tengo un formulario HTML que utiliza un div (submitme) para activar el código siguiente…..a continuación, el código utiliza el bValidator plugin para validar los campos del formulario y, a continuación, comprueba si un honeypot campo está en blanco antes de enviar el formulario….

Cuando me excluir la ventana».ubicación de…», etc el .submit() trabajos y los puestos de la forma a través de, sin embargo, cuando se incluyen; la validación/honeypot todavía funciona, pero no envía.

Soy nuevo en JQUERY y me estaba preguntando si hay algo simple im falta o una mejor manera de escribir la siguiente:

$("#submitme").click(function(){
    if($('#right-body-div').data('bValidator').validate()) {

        if ($("#honeypot").val() == "") {
                $('#pgpost').submit();
                window.location = "http://www.homepage.co.uk/thankyou";    
                return true;
              }
           window.location = "http://www.homepage.co.uk/nothankyou";
           return false;
    }
});

Si es posible me gustaría lograr esto sin el uso de AJAX/PHP.

Sus pensamientos sería muy apreciada.

  • Lo ideal es no publicar y, a continuación, redirigir, que acababa de publicar. El servidor debe responder a los post con la respuesta adecuada. Una redirección no es necesaria porque la ley de la publicación se actualiza a una nueva página. Usted debe publicar hasta el destino deseado de la página y de la manija del lado del servidor post sobre eso.
InformationsquelleAutor jclarke04 | 2012-05-28

1 Kommentar

  1. 4
    $('#pgpost').submit(function(e) {  //this handles the submit event
        if($('#right-body-div').data('bValidator').validate()) {
            if ($("#honeypot").val() == "") {
                /*
                 * url = $('#pgpost').val('action');
                 * data = $('#pgpost').serialize();
                 * $.post(url, data, function() {
                 *     window.location = "http://www.homepage.co.uk/thankyou";
                 * });
                 */
                window.location = "http://www.homepage.co.uk/thankyou";
            }
            else {
                window.location = "http://www.homepage.co.uk/nothankyou";
            }
        }
    
        e.preventDefault();
        return false;
        /*
         * the 2 lines above are meant to prevent the normal behaviour
         * that the <form> would have (which is to submit via browser).
         * 
         * e.preventDefault() is the jquery way prevent the normal behaviour
         * return false is the legacy way to do it, you can use either or both
         * 
         * the reason for which the code didn't validate your form is
         * that e.prevenDefault() was only called inside the IF statement
         * which means that it would only be called if the field was
         * already in valid form. So basically if the form was invalid the normal
         * behaviour is not prevented and the browser submits the form, if the form
         * was valid the submit behaviour was prevented and the redirect was used.
         * 
         */
    });
    
    $("#submitme").click(function(){
        $('#pgpost').submit(); //this triggers the submit event
    }); 

    Cuando manejo el evento de envío a través de JavaScript, se puede:

    • impedir el normal comportamiento de siempre (en nuestro caso):
      • cuando el formulario es válido que enviar los datos a través de JavaScript y quizá proceso antes de enviarlo;
      • cuando el formulario no es válido mostrar mensajes de error;
    • impedir el normal comportamiento sólo cuando el formulario no es válido:
      • cuando el formulario es válido, que permiten un comportamiento normal (navegador envía los datos);
      • cuando el formulario no es válido mostrar mensajes de error;

    Mensajes de Error en su caso se debe indicar que honeypot no debe estar vacío.

    Tiene sentido para evitar un comportamiento normal si:
    – usted necesita para procesar los datos antes de enviarlos al servidor (la creación de nuevos valores, el cambio de los valores presentes; no validación);
    – usted necesidad de evitar la actualización de la página de modo que usted envíe a través de AJAX;

    Sólo para la validación no tiene sentido para prevenir el comportamiento, porque se puede validar, a continuación, permitir el normal comportamiento a seguir.

    • Gracias por la respuesta rápida a todos, después de Mihai del código, la eliminación de «return true» y la adición de «otra cosa» en la segunda ventana.ubicación de la forma que ahora se presenta y redirecciones sin embargo, el ahora, la forma de puestos de cada vez, incluso si los campos no son válidos – en mi código original el honeypot/enviar sólo costaría si los campos eran válidas (anidada). cualquier otra sugerencia? (David gracias por tu comentario, voy a mirar en su propuesta, como tendrá que aprender a escribir en el lado del servidor manejo y devolución de datos, etc).
    • Gracias Mihai por tomarse el tiempo para re-escribir el código & comentarios adicionales…el honeypot/validación funciona y evita que la forma de presentación, también la redirección funciona, enviando al usuario a la página correcta depende de honeypot de valor, sin embargo la forma no parece ser la presentación de (nada ha cambiado con el script de PHP manejo de la forma y el correo electrónico en mi bandeja de entrada) así que sólo puedo asumir es algo para hacer con el .submit()…..alguna idea?
    • Voy a actualizar mi respuesta a explicar.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea