2013-03-06 2 views
0

Я работаю с jquery.validate.min.js скриптом и его работой отлично, насколько валидация идет.jQuery Подтвердить и перейти на страницу после успешной отправки

Моя проблема заключается в том, что ее публикация/отправка данных, как она должна, но мне нужно, чтобы она действительно перешла на страницу success.php после успешной отправки.

Сейчас это просто эхо от success.php и показано на моей главной странице.

Как код ниже:

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script> 
<script> 
$(document).ready(function() { 

$("#form1").validate({ 

    debug: false, 
    rules: { 
    name: "required", 
    email: { 
    required: true, 
    email: true, 
    } 
    }, 
    messages: { 
    name: "Please enter your name.", 
    email: "Please enter a valid email address.", 
    }, 
    submitHandler: function(form) { 

    $.post('success.php', $("#form1").serialize(), function(data) { 
    $('#result').html(data); 
    }); 

    } 
}); 

}); 


<form id="form1" action="success.php" method="POST"> 
    <input name="name" type="text" /> 
    <input name="email" type="text" /> 
    <input type="submit" value="submit" /> 
</form> 
</script> 

Как я могу получить его, чтобы перейти на страницу отправки сообщения после успешного представить?

+0

Вы используете 'ajax' в' submitHandler', так что это ожидаемое поведение. Просто удалите всю функцию обратного вызова 'submitHandler', чтобы вернуться к поведению формы по умолчанию, включая перенаправление. См. Мой пример ниже. – Sparky

+0

Сначала я получил свой ответ, он содержит подробное объяснение, рабочую демонстрацию и не содержит ненужную функцию 'SubmitIFValid' и неаккуратный встроенный обработчик JavaScript' click', который находится в принятом ответе. Пожалуйста, любезно объясните. – Sparky

ответ

0

Что об этом?

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script> 
<script> 
$(document).ready(function() { 

$("#form1").validate({ 

    debug: false, 
    rules: { 
    name: "required", 
    email: { 
    required: true, 
    email: true, 
    } 
    }, 
    messages: { 
    name: "Please enter your name.", 
    email: "Please enter a valid email address.", 
    } 
}); 

}); 

function SubmitIfValid() 
{ 
    if(!$("#form1").valid()) return false; 
    return true; 
} 

</script> 

<form id="form1" action="success.php" method="POST"> 
    <input name="name" type="text" /> 
    <input name="email" type="text" /> 
    <input type="submit" value="submit" onclick="return SubmitIfValid();" /> 
</form> 
+0

Вам не нужно 'SubmitIfValid()' ... вот что делает плагин уже. – Sparky

+0

Ах да, вы правы. Я быстро взял этот код из одного из моих примеров, который немного отличается, достаточно разный, чтобы получить отдельный метод проверки правильности. –

1

Ваш код:

submitHandler: function(form) { 
    $.post('success.php', $("#form1").serialize(), function(data) { 
     $('#result').html(data); 
    }); 
} 

"Прямо сейчас это просто отголоски из success.php и показывает в моей главной странице."

Да, именно так должно функционировать jQuery $.post(). Это ajax.

Просто удалите всю функцию обратного вызова submitHandler от .validate(). Нет смысла использовать ajax, чтобы отправить форму в этом случае, если вы просто хотите перенаправить ее на страницу по умолчанию. Удалите опцию submitHandler и она будет вести себя как стандартная форма с перенаправлением на основе вашего атрибута action.

По умолчанию плагин проверяет достоверность, и если форма действительна, она будет отправляться как любая другая стандартная форма и следовать вашим action="success.php".

Работа DEMO: http://jsfiddle.net/yCePj/

$(document).ready(function() { 

    $("#form1").validate({ 
     debug: false, 
     rules: { 
      name: "required", 
      email: { 
       required: true, 
       email: true, 
      } 
     }, 
     messages: { 
      name: "Please enter your name.", 
      email: "Please enter a valid email address.", 
     } 
    }); 

}); 
Смежные вопросы