2011-10-19 37 views
0

我正試圖編寫一個表單,該表單將在某個特定時間禁用,並且我希望使用JavaScript進行發佈。但是,由於人們可以輕鬆更改計算機上的日期,因此我希望能夠使用Apache提供的日期作爲比較日期。我嘗試了一些簡單的東西,但SSI回聲日期不會與JavaScript日期進行比較。我的代碼如下。有任何想法嗎?將SSI日期與javascript日期比較

var currenttime = '<!--#config timefmt="%a %b %d %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' 
var currenttime = currenttime+' GMT-0400 (EDT)'; 

var disableDate = new Date(); 
disableDate.setFullYear(2011,9,18); 
disableDate.setHours(17,0,0,0); 

if(disableDate < currenttime) 
    $('#date_field').attr("disabled", true); 
+0

請注意,這不是在表單上禁用元素的正確方法。我理解這一點,但我也喜歡學習JavaScript,並且想弄清楚如何做到這一點。 – Cloudkiller

回答

1

您正在比較字符串與日期。將您的currenttime字符串轉換爲Date對象第一:

var currenttime = '<!--#config timefmt="%a %b %d %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" --> GMT-0400 (EDT)'; 
currenttime = new Date(currenttime); 

這就是說,會轉而使用conditional SSI到完全禁用窗體服務器端而不是讓JavaScript來爲你做的。

+0

完美運作。感謝您幫助我將這個表格拼湊在一起。我知道有更好的方法來做到這一點,但我部分只是想玩JavaScript。 – Cloudkiller

0

通常,你根本不需要這個。如果您依賴JavaScript來禁用任何邏輯,則希望將頁面保存到磁盤,JavaScript將拆分,並在任何時間或兩年後提交表單。

你應該關注的是「如何在特定時間拒絕處理?」 - 如您所見,問題不再依賴於用戶時鐘。去服務器端!

從JavaScript開始,僅用於用戶方便。所有的「安全」規則都是針對服務器端的。

+0

Alf,我意識到人們會亂用JavaScript。所有表單提交都會在數據庫中加上標記,並且在收到時間後仍然可以丟棄截止日期之後提交的條目。我只是尋找一種快速/骯髒的方式來禁用一段時間後(我不打算在我的辦公室的時間),因此大多數用戶只能選擇適當的字段。另外,我會去PHP併爲自己節省很多問題,但是我將這些表單包含在CMS中,並將它們更改爲PHP,從而打開了一堆新的蠕蟲。 – Cloudkiller