我正在用RSV验证器检查我的表格。想得到以下工作:假设用户是第一次打开页面。填写所有文本输入框后,当用户首次单击#submit_btn
时,表单提交功能将触发RSV(验证器),验证器将检查是否存在任何错误。如果没问题,则通过ajax发布数据,否则RSV借助alert()
显示错误消息数组。此程序仅在第一次
顺便说一句:RSV-验证器。如果在验证过程中未发生任何错误,则myoncomplete()
函数将返回1.。如果出现问题,它将发出警报。从here获得
我无法正常工作。请帮助我解决逻辑/代码错误。提前Thx
我的JS
var int=null;
var counter=0;
function myOnComplete() {
return 1;
}
$(document).ready(function () {
$("#add_form").RSV({
onCompleteHandler: myOnComplete,
rules: [
"required,name,Page name required",
"required,title,Page title required.",
]
});
$("#add_form").submit(function (e) {
e.preventDefault();
dataString = $("#add_form").serialize();
$.ajax({
type: "POST",
url: "processor/dbadd.php",
data: dataString,
dataType: "json",
success: function (result, status, xResponse) {
//do something if ajax call is success
int = setInterval(call, 3000);
var message = result.msg;
var err = result.err;
if (message != null) {
$.notifyBar({
cls: "success",
html: message
});
}
if (err != null) {
$.notifyBar({
cls: "error",
html: err
});
}
},
error: function (e) {
//ajax call failed
alert(e);
}
});
});
$("#submit_btn").click(function () {
if(counter===0){
if(myOnComplete()===1) $('#add_form').submit();
else return false;
}
else $('#add_form').submit();
counter++;
});
$('#autosave').click(function(){
if($(this).is(':checked')){
int = setInterval(call, 3000);
$('#submit_btn').attr({'value':'Save&Exit'});
}
else{
$('#submit_btn').attr({'value':'Save'});
clearInterval(int);
}
});
});
function call() {
$('#add_form').submit();
}
最佳答案
通过查看RSV代码,看起来就像您将RSV附加到其上一样,都具有其提交反弹以使用.RSV.validate()验证数据
如此处所示:
$(this).bind('submit', {currForm: this, options: options}, $(this).RSV.validate);
});
这意味着,如果您使用.submit(),那么您还将调用.RSV.validate。
因此,一旦您验证了信息,请尝试将您的提交绑定到标准提交功能。
编辑:帮助说明
使用时
$("#add_form").RSV({...});
RSV javascript代码将.RSV.validate()绑定到add_form元素的Submit事件。意味着当您提交add_form表单时,在提交之前将调用RSV.validate()。
尝试在不带.RSV()调用的情况下运行以下脚本代码
该脚本将在add_form元素上记录所有事件的所有处理程序。您会注意到,调用$ element.RSV({...})将第二个事件处理程序附加到add_form元素的Submit事件。我不确定访问此事件处理程序以.unbind()的最佳方法。祝好运 :)
jQuery.each($('#add_form').data('events'), function(i, event){
jQuery.each(event, function(i, handler){
console.log(handler);
});
});