我有这段代码jsFiddle。我想要完成的是以下内容。当用户单击对话框中的“确定”按钮时,我希望代码计算“field1”的日期是否在“field2”之后,这意味着当前时段是在前一个之后(应该如此)。如果是这样,我希望操作继续,填充文本框并关闭对话框。每当不是这样时,我想提醒用户所做的选择是无效的(在Current之后不能到来)。我没有日期数学的问题(插件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");
}
答案 0 :(得分:1)
您在上面写的内容,使用Date.compare()
大多是正确的。有关比较的文档为here。
但它有两点:
$("input#field1")
和#("input#field2")
会引用输入框,而不是对话框选择框。您希望在将值分配给输入框之前进行验证,否则关闭对话框并且无关紧要,因为值已经分配。它应该去的地方(基于小提琴)位于单击OK按钮时调用的函数的开头。现在看起来你正在处理当前日期并将值放在输入框中,然后处理上一个日期并分配值。在发生任何这种情况之前,您需要检查这些值是否在彼此之前。