validationEngine('验证')不是函数

时间:2016-09-12 19:36:40

标签: javascript jquery forms jquery-validation-engine

如果表单处于有效状态,我想知道一个简单的表单。

此项目正在使用jQuery Validation Engine

我使用的是同一版本2.6.2

根据文档,它支持函数validationEngine('validate'),它根据表单的状态返回true或false。

我一直收到错误TypeError: $(...).validationEngine is not a function 但奇怪的是,表单会根据需要抛出验证错误。

我确实检查了在jquery之后和我触发调用的js文件之前加载了validationEngine插件。表单选择器也是正确的。

表格:

  <form name="editProfileForm" method="post" action="#" class="epf" id="editDiaryForm" style="display:none;">

        <a href="javascript:void(0)" onclick="toggleCancel(this,'addPlay');$('#editDiaryForm')[0].reset();;" class="pull-right action-link">Cancel</a> 
        <a href="javascript:void(0)" onclick="submitDiary('#editDiaryForm');" class="pull-right action-link">Save </a>
        <input class="form-control validate[required, ajax[ajaxDiaryCall]]" name="title" id="title" type="text"/>
        <textarea class="form-control validate[required]" name="playdiary" id="playdiary"></textarea>

        <input type="hidden" name="Edit" value="playdiary" />
      </form>

附加验证:

 $(document).ready(function(){
      $("#editDiaryForm").validationEngine('attach'); 
        //This throws true
        console.log($('#editDiaryForm').validationEngine('validate')); 
    });

提交功能

  function submitDiary(formid)
    {
      $(formid).bind('submit' , function(e){
        e.preventDefault();
        // Gives me the expected value
        console.log('Submiting Form - '+ formid);
        //Throws me an error here if commited
        $(formid).validationEngine();
        submit = false;
        //Gets stuck here
        if(submit == false && $(formid).validationEngine('validate') == true)
        {
          submit=true;
          $.ajax({
            url: url+'diary/save',
            async: false,
            type: "post",
            data: $(formid).serialize(),
            success: function (data) {
              if(data==true)
              {
                $('#diaries').prepend(data);
              }
              else
              {
                custom_page_msg('Something Went Wrong. Please Login to your account again to complete the action.');
              }
              submit = false;
            }
          });
        }

      });

      $(formid).submit();
 }

脚本订单

<script src="<?php echo base_url()?>js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="<?php echo base_url('js'); ?>/bootstrap.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<script src="<?php echo base_url('js/languages'); ?>/jquery.validationEngine-en.js"></script>
<script src="<?php echo base_url('js'); ?>/jquery.validationEngine.js"></script>
<script src="<?php echo base_url('js'); ?>/jquery.customSelect.min.js"></script> 

<script src="<?php echo base_url('js'); ?>/scripts.js"></script>
<script src="<?php echo base_url('js'); ?>/other-validation.js"></script>
<script src="<?php echo base_url('js'); ?>/dropzone.js"></script>
<script src="<?php echo base_url('js'); ?>/global.js"></script>

任何关于此的指导都会非常有帮助。

更新

它在其他地方解决了这个问题。我发现一个文件正在加载自己的JS版本。在submitDiary函数开头只是一个简单的jQuery.noConflict();就可以了。如果你遇到可能是它的silimar。

感谢。

1 个答案:

答案 0 :(得分:0)

好的问题是你在jQuery没有准备好的时候试图调用某个函数,这是同步的最佳选择。进程只需在按钮上绑定click事件,然后单击即可处理所有数据。

贝娄我有一个简单的例子正在发挥作用。

&#13;
&#13;
$(function(){
    $("#editDiaryForm").validationEngine('attach');
    console.log("Here is type of validationEngine: ", typeof $("#editDiaryForm").validationEngine);
  
  $('#test').bind('click', function(e) {
    e.preventDefault();
    $(this).parent('form').validationEngine('validate');
  });
});
&#13;
<html>
<head>

</head>
<body>
   <form name="editProfileForm" method="post" action="#" class="epf" id="editDiaryForm">
        <a id="test" href="#" class="pull-right action-link">Save </a>
      </form>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/jquery-1.8.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/languages/jquery.validationEngine-en.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.2/jquery.validationEngine.min.js"></script>
</body>
</html>
&#13;
&#13;
&#13;