2013-06-25 63 views
0

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

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

以下是我目前捕捉:

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

我已阅读,我可以通过这些PARAMS(开始时间)到验证这样的:

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

UPDATE:

我触发现在提交按钮的点击验证;没问题。现在的问题是我如何将参数传递给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); 

回答

0

好的,这是我更新的代码:

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

我创建一个新的方法并传递ARGS那里;错误。将参数直接传递给验证方法。