我正在使用RSV验证器检查我的表单。想要得到以下工作:让我们说用户第一次打开页面。填写所有文本输入框后,当用户单击#submit_btn
第一次时,表单提交功能触发RSV(验证器),验证器检查是否有任何错误。如果可以,通过ajax发布数据,否则RSV会在alert()
的帮助下显示错误消息数组。本程序仅适用于第一次
BTW: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();
}
答案 0 :(得分:1)
好的,根据我的理解,现在你只想验证第一组数据,如果验证正确信任用户,我用jsFiddle开发了一个简单的例子,我想你可以利用那个
基本上我所做的是我抓住提交按钮点击而不是表单提交功能,也许它也可以这样做。我指定了一个类“需要验证”,当第一次验证通过时,我只是删除该类。如果该类不存在,则由于$(this).hasClass('needval')
如果那不是你想要的,那么你的问题需要更清晰:(希望这会有所帮助!
答案 1 :(得分:1)
查看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);
});
});