2013-06-25 65 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那裏;錯誤。將參數直接傳遞給驗證方法。