1

我有这个代码jsFiddle。我想要完成的是以下内容。当用户单击对话框内的“确定”按钮时,我希望代码计算“field1”的日期是否在“field2”之后,这意味着当前时期在前一个时期之后(应该如此)。如果是这样,我希望操作继续,填充文本框并关闭对话框。每当这不正确时,我想提醒用户所做的选择是无效的(以前的不能在当前之后)。我对日期数学没有问题(插件 date.js 让它变得很容易),我在试图找出在哪里包含这个条件时遇到了问题。任何帮助将不胜感激,请随时更改代码并在此处发布您的结果。谢谢。

我觉得代码应该在关闭对话框之前运行,但我无法获得正确的条件来实现它,例如:

//code up to here handles 'if's and 'else's
var currentPeriod = $("input#field1").val()
var previousPeriod = $("input#field2").val()

 d1 = Date.parse(currentPeriod);
 d2 = Date.parse(previousPeriod); 

if((Date.compare(d1,d2))=='1')
{
  $(this).dialog("close");
 }
else
  {
   alert("Invalid date range");
 }
4

1 回答 1

1

你上面写的,使用Date.compare()大多是正确的。比较文档在这里

不过有两点:

  • 该代码不在您放在一起的任何地方。
  • 在您的小提琴中$("input#field1")#("input#field2")将引用输入框,而不是对话框选择框。您希望在将值分配给输入框之前进行验证,否则您将关闭对话框并且这并不重要,因为已经分配了值。

它应该去的地方(基于小提琴)是在单击 OK 按钮时调用的函数的开头。现在看起来您正在处理当前日期并将值放入输入框中,然后处理前一个日期并分配值。在发生任何这种情况之前,您需要检查这些值是否在另一个之前。

于 2012-11-08T00:06:43.583 回答