2016-12-15 17 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会触发每个角色。 –