【发布时间】:2016-09-12 19:36:40
【问题描述】:
我有一个简单的表单,我想知道该表单是否处于有效状态。
这个项目正在使用jQuery Validation Engine
我使用的是同一个版本 2.6.2
根据文档,它支持 validationEngine('validate') 函数,该函数根据表单的状态返回 true 或 false。
我不断收到错误TypeError: $(...).validationEngine is not a function
但奇怪的是,表单会根据需要抛出验证错误。
我确实检查了validationEngine插件是在jquery之后和我触发调用的js文件之前加载的。表单选择器也是正确的。
形式:
<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(); 就可以了。如果您遇到类似的事情,可能就是这样。
谢谢。
【问题讨论】:
标签: javascript jquery forms jquery-validation-engine