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