2011-01-08 120 views
4

我需要添加自定義驗證(我認爲)驗證來自用戶的輸入。這是我的使用情況: 我使用jQuery UI的日期選擇器選擇日期,本地化是這樣的:jquery datepicker和自定義驗證

$.datepicker.setDefaults($.datepicker.regional[ currentLocale ]);

我使用bassistance驗證插件,以及使用規則date:true和這種不工作不同的格式(或者如果他們確實請告訴我怎麼做!)。所以,我做了我自己的日期驗證方法,這樣

$.validator.addMethod("validDate", function(value) { 
     return parseDateString(value) != null; 
    }, jQuery.validator.messages.date); 

這所有的作品很好選擇在驗證了的及部件前值觸發的日期選擇日期時,除了事實被改變!所以我實際上驗證了以前的值....

有沒有人有我的解決方案? 感謝提前:)

回答

8

你可以觸發驗證upon the user closingdatepicker彈出:

$("#birthdate").datepicker({ 
    onClose: function() { 
     /* Validate a specific element: */ 
     $("form").validate().element("#birthdate"); 
    } 
}); 

使用validateelement()功能將使您立刻驗證一個特定的領域。

我創建了一個示例here,其中任何年份!= 2011的日期都將觸發驗證失敗。

+0

另一種使用onClose方法的方法是驗證動態日期選擇器。如果頁面完成加載,然後添加一個輸入元素並添加了日期選擇器,則驗證消息將稍微不同步。如果用戶嘗試發帖而未選擇日期,則顯示該消息。在此場景中選擇日期後,該消息將不會被刪除(除非第二次選擇該日期)。 `onClose:function(){$(this).valid();}`將使消息正確同步。 – 2012-07-10 19:18:59