2011-11-28 16 views
0

由於我無法爲與jQuery datapicker有關的問題獲得任何解決方案,因此我想我可能需要編寫一個代碼來自己驗證日期。我有一個格式爲mm.dd.yyyy的日期文本框。我如何驗證文本框中的日期不應該大於模糊的當前日期?使用jQuery以mm.dd.yyyy格式驗證日期

Reminder.config = { 
    BaseURL: "Reminder.ashx?" + Reminder.BaseURLQuery, 
    tblHistory: "#tblHistory", 
    txtNotes: "#txtNotes", 
    txtDate: "#txtDate", 
    btnSave: "#btnSave", 
    dateFormat: 'mm.dd.yy', 
}; 

Reminder.Init = function() { 
//Set up calendar 
var $txtDate = $(Reminder.config.txtDate); 
$txtDate.datepicker({ 
    dateFormat: Reminder.config.dateFormat, 
    onClose: function (dateText, inst) { 
     try { 
      $.datepicker.parseDate(Reminder.config.dateFormat, dateText); 
     } catch (e) { 
      $txtDate.val(''); 
     }; 
    }, 
    maxDate: '+0' 
}); 

$txtDate.datepicker('setDate', new Date()).blur(function() { 
     try { 
      if ($txtDate.val() == '') { 
       $txtDate.datepicker('setDate', new Date()); 
      }    
     } 
     catch (ex) { 
      var myEx = myWeb.Exception(ex); 
      myEx.AddData("Method", "$txtDate.datepicker('setDate', new Date()).blur"); 
     } 
    }); 

}; 

回答

1

首先,你已經限制你的日期選擇器在未來不選擇日期。 但你不說什麼似乎是這個問題...反正...

一道殘影,甚至處理像這樣一個應該按預期工作:

$txtDate.blur(function(e){ 
    // this is now 
    var now = new Date(); 

    // let date picker parse the date since it has formatting set 
    var date = $txtDate.datepicker("getDate"); 

    // is date ok then? 
    if ((date || new Date()) >= now) 
    { 
     alert("Does not compute"); 
    } 
}); 
+0

其實,日期選擇器控制變灰將來的日期,但它不限制用戶在相應的文本編輯將來的日期。我想,maxDate應該處理它,但它沒有。所以我想添加一個代碼來模糊事件以編程方式進行檢查。 –

+0

@ kuul13:是的,我也自己測試過。您可以有兩個選項:阻止用戶在該文本框中輸入或使用我提供的blur事件處理程序。 –

+0

謝謝羅伯特。你的解決方案奏效 –

0

我會被解析開始()從文本框中提供的日期,並將它的getTime()返回值與(new Date())。getTime()返回值進行比較。

如果第一個大於後者,則提供日期在未來。