复杂的jquery验证

时间:2013-06-25 19:38:58

标签: javascript jquery

我有一个我想要验证的表单(使用jquery验证插件)。问题是我需要在提交验证之前对表单值进行一些预处理。

例如,一个验证案例是用户在表单中定义的开始时间不能在此之前。我有2个组件,我需要从中获取值,以获得开始时间。

以下是我目前捕获的内容:

var mtgStart = new Date( startDate.getFullYear() + '-' + ( startDate.getMonth() + 1 ) + '-' + startDate.getDate() + ' ' + sTime );

我已经读过,我可以将这些参数(startTime)传递给验证,如下所示:

var defaults = jQuery.extend( validationPluginDefaults, {
                ignore:'',
                rules: {
                    meetingName:{
                        mtgNameRequired:true
                    },
                    e2: {
                        startTimeInPast:false
                        startTime:mtgStart
                    }
                }
            });

            jQuery( "form[ id='mtg_form' ]" ).validate( defaults ); 

问题是,我在哪里创建“mtgStart”变量?

我的验证方法如下:

jQuery.validator.addMethod("lowerInt", function(value, element, params) {
    var now = new Date();
    var mtgStart =  params[0]:

    return now < mtgStart;
}

更新:

我现在点击提交按钮触发验证;没问题。现在的问题是如何将参数传递给jquery验证插件?我尝试过使用javascript数组(正如我所读),但我无法访问它。这是我的代码:

jQuery.validator.addMethod( "createMtgInPast", function( val, el, params ){
var now = new Date();
var mtgStart = params[0];

var nowTime = now.getTime();
var setTime = mtgStart.getTime();

return nowTime < setTime;

},“过去无法创建会议。” );

这是我提交按钮的点击处理程序:

$( '#submit_btn' ).click( function( data )
                {   
                    // Concatenate the start/end dates and their times.             
                    var newStart = new Date( startDate.getFullYear() + '-' + ( startDate.getMonth() + 1 ) + '-' + startDate.getDate() + ' ' + sTime );
                    var newEnd = new Date( endDate.getFullYear() + '-' + ( endDate.getMonth() + 1 ) + '-' + endDate.getDate() + ' ' + eTime );

                    var defaults = jQuery.extend( validationPluginDefaults, {
                        rules: {
                            meetingName:{
                                mtgNameRequired:true
                            },
                            e2: {
                                createMtgInPast: true,
                                data:['TEST']
                            }
                        }
                    });
                    $( "#mtg_form" ).validate( defaults );  

1 个答案:

答案 0 :(得分:0)

知道了,这是我的更新代码:

var defaults = jQuery.extend( validationPluginDefaults, {
                        rules: {
                            meetingName:{
                                mtgNameRequired:true
                            },
                            e2: {
                                createMtgInPast: [newStart]
                            }
                        }
                    });

我正在创建一个新方法并将args传递到那里;错误。将args直接传递给验证方法。