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 Comentario

  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.

Dejar respuesta

Please enter your comment!
Please enter your name here