2011-10-19 148 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