2013-04-03 72 views
7

我使用的是一個datetimepicker插件,我發現here工作得很好。jquery驗證添加方法來驗證日期時間

現在唯一的問題是,由於在輸入框中輸入字符串的末尾增加了時間,它將打破jquery validation plugin中包含的標準日期驗證。

這是我到目前爲止在demo。我添加了一個驗證方法來檢查值是否是日期,但它不接受時間。

我需要編寫自定義驗證方法的幫助。如何拆分datetime字符串,然後執行測試以驗證它們?

感謝

+0

沒有運作日期選擇在你的jsfiddle。 – Sparky

+0

@Sparky當我嘗試瀏覽到DateTimePicker插件網站時,我收到了Forbidden。有沒有辦法上傳圖書館,而不是指向它?我猜不是。 –

+0

它再次工作。 –

回答

17

您已經爲date規則驗證。否則,你可以看看jQuery的驗證插件裏面獲得:

date: function(value, element) { 
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString()); 
}, 

這裏是一個自定義的方法,我發現用於驗證您的字符串的time部分。

$.validator.addMethod("time", function (value, element) { 
    return this.optional(element) || /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(value); 
}, "Please enter a valid time."); 

時間演示:http://jsfiddle.net/9CdvN/

只需將兩個功能結合到你的 「日期時間」 的方法。然後在空間處分割輸入值並相應地測試每個部分。


這裏就是我結合日期&時間的方法一起演示。它接受以下格式,yyyy/mm/dd hh:mm,所以你只需要稍微調整它。

http://jsfiddle.net/9CdvN/2/

1

你提到的日期時間選擇器說,它用了jQuery UI的日期選擇控件。您可以使用ui datepicker API,特別是dateFormat method來控制從小部件接收日期的格式。

您應該能夠設置日期選擇器以提供您需要驗證的格式的日期。

希望有幫助!

+0

設置日期和時間格式無法正確驗證。我真的覺得我需要一個自定義驗證方法來處理複合日期和時間字符串。 –

1

我可以建議你切換插件嗎? http://www.datejs.com/有辦法驗證日期和一些荒謬的語法糖傑出的號碼:

// Convert text into Date 
Date.parse('today'); 
Date.parse('t + 5 d'); // today + 5 days 
Date.parse('next thursday'); 
Date.parse('February 20th 1973'); 
Date.parse('Thu, 1 July 2004 22:30:00'); 
+0

我會看看這個插件,看看它是否符合我的需求。謝謝 –

+0

@ Wartickler-該庫仍處於Alpha狀態。它看起來不錯,但我想要更成熟的東西。謝謝 –

+0

它是Javascript! (儘管,jQuery風格)你需要多少成熟! (O; – Kristopher