Проверка Jquery не препятствует отправке формы - PullRequest
2 голосов
/ 30 декабря 2011

Я использую проверку jquery 1.9.0.Я использовал последнюю версию Jquery и вернулся к 1.6.0.без изменений в результате

Моя проблема заключается в следующем: Когда я намеренно вводю неправильные значения (недостаточно символов и т. д.), сценарий проверки корректно показывает ошибки, но в любом случае разрешает отправку сценария. Я испробовал методы проверки, включая правила добавления, правила и очень простой тип формы ниже.

<script>
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
</script>

<script>
$(function() {    
$("#comm").validate();

});
</script>

форма

<form action="comm.php" method="post" name="comm" id="comm">
Name: <input type="text" name="name" id="name"  minlength="3" class="required"  /> 
Email:<input type="email" name="email" id="email" class="required email" /> <br />
<label for="comment"> Comment </label> <br />

<textarea name="comment" id="comment" cols="80" rows="5" minlength="6" class="required" /></textarea> 
<?php
 date_default_timezone_set('America/New_York');
 $date = date("Y-n-j h:i:s");?>

 <input type="hidden" name="date" id="date" value="<?php echo $date; ?>" /> 
 <?php $post_id = $id;?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>" /> 
 <?php $ip = $_SERVER["REMOTE_ADDR"]; ?>

 <input type="hidden" name="ip" id="ip" value="<?php echo $ip; ?>" /> 

 <input type="submit" value="Post" name="post" id="post" /> <input type="reset" value="Reset Form" name="reset" id="reset" />
</form> 

Очень простые вещи.

Отправка происходит на всех моих формах в сети, и все они на локальном хосте.Я всегда могу обнаружить ошибки, но никогда не останавливать их.Что я делаю не так?

Firebug показывает, что я правильно отправляю сообщения, а ошибки скрипта нет.Также все jquerys связаны.Firebug также показывает мне это После представления novalidate = "novalidate" в виде html.использование onsubmit = return false ничего не меняет

Я использую ajax для отправки формы, работает без нареканий

$(function() {
    $("#comm").submit(function() {      
      var data = $('#comm').serialize();
      alert (data); return false;


        $.ajax({
            url: "comm.php",
            data: data,
            type: "POST",
            success: function(msg){
                if(msg){
                    $('.comme').prepend().html(msg).show();
                }else{
                    $('.comme').text("nothing came back");
                }
            }
        });
        return false;
    });
});

Спасибо

Ответы [ 2 ]

3 голосов
/ 31 декабря 2011

Попробуйте выполнить обработку Ajax после нажатия кнопки отправки, а не с отправкой формы jQuery, возможно, вы отправляете данные формы только через Ajax.

$(function() {
  $("#post").click(function() {
    var data = $('#comm').serialize();

    // TODO: validate your data - $("#comm").validate();

    // TODO: submit your form though ajax

    // Other operations on form data

    return false;
  });
});

Примечание. Если отправка формы происходит с перенаправлением страницы, попробуйте команду «onsubmit = return false;».

Обновление:

Мне кажется, вы должны отправить ФОРМУ из обработчика обратного вызова submit функции validate ( submitHandler ), чтобы избежать перенаправления после отправки. Пожалуйста, попробуйте проверить этот демонстрационный пример, который отлично работает с отправкой формы Ajax, просмотрите исходный код страницы этого примера и затем измените свой код соответствующим образом.

var v = jQuery("#form").validate({
  submitHandler: function(form) {
    jQuery(form).ajaxSubmit({
      target: "#result"
    });
  }
});
1 голос
/ 30 декабря 2011

Если вы используете jquery для получения формы при ее отправке, тогда вы должны указать php-файл, содержащий код jquery, в качестве действия формы, а не «прослушивать» событие submit. Другой вариант - оставить параметр «action» пустым. Дело в том, что вы отправляете форму дважды: когда вы нажимаете кнопку саммита, форма автоматически отправляется в файл, указанный в параметре 'action' (то есть происходит отправка, потому что она не имеет проверки) ; и, в то же время, когда вы нажимаете кнопку отправить, он также запускает запрос ajax, который выполнит проверку и в случае успеха выполнит отправку снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...