0

我有一个我想要验证的表单(使用 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 );  
4

1 回答 1

0

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

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

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

于 2013-06-26T16:50:12.177 回答