2016-12-15 2 views
0

Кто-нибудь понимает, почему этот авто отправляет форму? Кажется, он не находит правильного ответа на вопрос, почему он это делает.jquery auto отправляет себя

Использование петли запроса для проверки формы в модальном формате.

Открытый пользовательский интерфейс, пользователь начинает вводить текст в текстовую область, вы должны, по крайней мере, набирать 20 символов и лимитировать 100. Когда вы находитесь над 20, форма отправляет его самостоятельно.

Независимо от того, что я делаю, я не могу предотвратить это.

Любой ключ?

Спасибо =)

    <div id="form-content" class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-hidden="true"> 
       <div class="modal-dialog modal-sm"> 
        <div class="modal-content"> 

        <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">X</span> 
         </button> 
         <h4 class="modal-title" id="myModalLabel2">Modal title</h4> 
        </div> 
        <div class="modal-body"> 
       <!-- start form for validation --> 
       <form id="ReportForm"> 

        <label for="fullname">Brukernavn :</label> 
        <input type="hidden" id="Username_Field" class="form-control" name="username" value="Kimmeliten" /> 

         <label for="message">Message (20 chars min, 500 max) :</label> 
         <textarea id="message" required="required" class="form-control" name="message" data-parsley-trigger="keyup" data-parsley-minlength="20" data-parsley-maxlength="100" data-parsley-minlength-message="Come on! You need to enter at least a 20 caracters long comment.." data-parsley-validation-threshold="10"></textarea> 


       </form> 
       <!-- end form for validations --> 
           </div> 
        <div class="modal-footer"> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
         <button type="button" class="btn btn-primary" id="submit10">Save changes</button> 
        </div> 
        </div> 
       </div> 
       </div> 
       <!-- /modals --> 

    <script> 
    $(document).ready(function() { 
    $.listen('parsley:field:validate', function() { 
     validateFront(); 
    }); 
    $('#submit10').click(function(){ 
     $('#ReportForm').parsley().validate(); 
     validateFront(); 
    }); 
    var validateFront = function() { 
     if (true === $('#ReportForm').parsley().isValid()) { 
     $('.bs-callout-info').removeClass('hidden'); 
     $('.bs-callout-warning').addClass('hidden'); 
        $.ajax({ 
        type: "POST", 
         url: "forum/ajax/report.ajax.php", 
         data: $('#ReportForm').serialize(), 
       success: function(msg){ 
          $("#thanks").html(msg); 
         $("#form-content").modal('hide'); 
         }, 
           error: function (xhr, ajaxOptions, thrownError) { 
             alert(xhr.status); 
             alert(thrownError); 
             } 
       });    

     } else { 
     $('.bs-callout-info').addClass('hidden'); 
     $('.bs-callout-warning').removeClass('hidden'); 
     } 
    }; 
    }); 
    try { 
    hljs.initHighlightingOnLoad(); 
    } catch (err) {} 
</script> 

ответ

1

Не совсем уверен, но, глядя в documentation, показывает:

форма: Validate | Запускается, когда валидация формы запускается до ее проверки.

Кажется, что ваш слушатель уволен, как только вы начнете проверять, что вызывает проверку подлинности.

$.listen('parsley:field:validate', function() { 
    validateFront(); 
}); 

Вы пытались бы прослушать form:success?

+0

Нет, но теперь я вижу, когда добавляю поля в SQL, которые он запускает каждый раз, когда вы вводите символ через 20 до тех пор, пока не отправите форму. хе-хе. Внезапно 50 строк вставляются в db: D – KommerSnart

+0

вы запускаете проверку на каждой клавиатуре через 'data-parsley-trigger =" keyup "'. Так что ясно, что ваш validateFront запускается каждым персонажем. –