复杂的jquery验证

Complicated jquery validation

本文关键字:验证 jquery 复杂      更新时间:2023-09-26

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

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

以下是我目前的捕捉方式:

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 );  

明白了,这是我更新的代码:

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

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