如何在按钮提交前验证数据?

时间:2012-11-07 21:51:18

标签: javascript jquery html

我有这段代码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");
 }

1 个答案:

答案 0 :(得分:1)

您在上面写的内容,使用Date.compare()大多是正确的。有关比较的文档为here

但它有两点:

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

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