我正在用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);
    });
});

10-02 17:48