2016-12-15 19 views
0

任何人都明白爲什麼這個自動提交表單?似乎沒有找到正確的答案,爲什麼它這樣做。jquery auto自己提交

使用查詢parsley來驗證模態中的表單。

用戶打開模式,用戶開始在文本區域輸入內容,您必須至少鍵入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,顯示:

形式:驗證|觸發表單驗證時觸發,在驗證之前觸發。

看來,只要您開始驗證,您的偵聽器就會被觸發,什麼觸發validateFront。

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

您是否嘗試過傾聽form:success

+0

不,但我現在看到,當將字段添加到SQL時,它會在每次輸入完20個字符後運行,直到您提交表單。呵呵。突然有50行插入db:D – KommerSnart

+0

您通過'data-parsley-trigger =「keyup」'觸發每個鍵盤上的驗證。很明顯,您的validateFront會觸發每個角色。 –