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

标签 javascript jquery html

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

最佳答案

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

不过有两点:

  • 该代码不在您放在一起的 fiddle 中的任何位置。
  • 在你的 fiddle 中,$("input#field1")#("input#field2")将指的是输入框,而不是对话框选择框。您希望在将值分配给输入框之前进行验证,否则您关闭对话框就没有关系,因为值已经分配了。

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

关于javascript - 如何在按钮提交之前验证数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278882/

相关文章:

jquery - 有使用 JSON、JScript 和 jQuery 的教程吗?

javascript - 使用 Bootstrap 将列设置为等高。

html - 如何让边框半径和渐变背景在 IE 9 中协同工作

c# - 在 asp 中使用文字而不是 html 的原因和好处

javascript - 如何让剪刀石头布游戏中的图像发生变化?

javascript - javascript代码的动态执行

javascript - 如何让本地 html 文件在 firefox 17 中发出 XHR 跨域请求?

javascript - jQuery触发anchor的onclick事件而不发送浏览器到href

javascript - Vue.js 工作流程(从 Vue.js 1 到 2)

onClick 中的 Javascript setTimeout