如果表单处于有效状态,我想知道一个简单的表单。
此项目正在使用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。
感谢。
答案 0 :(得分:0)
好的问题是你在jQuery没有准备好的时候试图调用某个函数,这是同步的最佳选择。进程只需在按钮上绑定click事件,然后单击即可处理所有数据。
贝娄我有一个简单的例子正在发挥作用。
$(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;