我正在使用bassistance验证插件,并有一个小脚本捕获第二个提交按钮(称为预览)并通过ajax将数据发送到fancybox。我想在将表格发送到fancybox之前对其进行验证。如果我通过提交按钮发送表单,目前他们只是验证。我尝试了各种方式(例如我在if之后直接调用验证)但是无法使其工作。也许有一种方法可以让验证知道它应该在预览按钮被击中时做出反应吗?
我的代码:
$(function() {
$('#myform *').tooltip();
$('#myform ').validate();
});
$(document).ready(function(){
$(':submit').click(function(){
for (var i in CKEDITOR.instances){
CKEDITOR.instances[i].updateElement();
}
var value = $(this).attr("id");
if (value == 'preview') {
$.fancybox.showLoading();
$.ajax({
type : "POST",
cache : false,
url : "../mypath/",
data : $('#myform').serializeArray(),
success : function(data) {
$.fancybox(data, {
'minWidth': '100%',
'minHeight': '100%',
});
}
});
return false;
}
});
});
答案 0 :(得分:3)
如果我没有错,那么Bassistance Validator插件依赖于以下事实:如果您提交表单并且不满足要求,则该函数返回" false"在该提交上,使您可以直观地看到所犯的错误。
在您的源代码中,您在代码的最开始时正确初始化了Bassistance验证器插件(我假设您直接在输入字段上创建了规则,例如minlength =" 2" required)但是有一个问题:提交按钮的SUBMIT事件没有挂钩,但只有该按钮上的CLICK事件。
Bassistance网站上有一个简单的例子,展示了如何为插件使用自定义提交事件:
http://jquery.bassistance.de/validate/demo/ajaxSubmit-intergration-demo.html
基本上,您需要做的是将代码的智能部分插入
jQuery("#yourform").validate({
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
/*
Here you can do the following:
1) Update the instances of CKEDITOR
2) Check if the submit is in the preview mode
3) If yes
- do your fancy stuff
- return false so that the real submit is not triggered
If not
- return true so that the real submit handler is evaluated by the browser and the POST is triggered
*/
});
}
});