使用表单中的脚本比较日期

时间:2013-07-14 14:58:33

标签: javascript

我正在尝试根据在第一个文本框中输入的日期来验证日期。如果第二个文本框超过在第一个文本框中输入的日期一年,则它应显示警告并将第二个日期字段文本框留空。两个文本框都是只读的,并从日历中获取值。我尝试了以下代码,但即使年份不超过一年,警报也会弹出。此外,是否可以传递'name3'和'name4'ID作为参数。我需要将此代码应用于10行。

<script>
function fixup()
{
    var parts = document.getElementById('name3').value.split("-");  
    parts[2] = Number(parts[2]) + 1;     
    var pj = parts.join("-");

    var x=document.getElementById('name4').value;
    if(x>pj)
        {
        alert("Expiration date should not be greater than one year from start date");
        document.getElementById('name4').value = "";
        return false;
        }
    return true;
 }



</script>
</head>
<body>
<form onsubmit="return fixup()">
<table>
<tr>
<td><input type="text" name="soname3" id="name3" size="15" readonly="readonly"> 
<img src="../Image/cal.gif" id="" style="cursor: pointer;" onclick="javascript:NewCssCal('name3','MMddyyyy','dropdown',false,'12')" /></td>
 <td><input type="text" name="soname4" id="name4" size="15" readonly="readonly">
 <img src="../Image/cal.gif" id="" style="cursor: pointer;" onclick="javascript:NewCssCal('name4','MMddyyyy','dropdown',false,'12'); " /> </td>
 </tr>
</table>
<input type="submit" value="Submit">
</form>

我在dm03514的建议后做了下面的代码。但验证不起作用..

  function test()
  {
      start = document.getElementById('name3').value;
      end = document.getElementById('name4').value;
      compare(start, end);

  }

  function compare(sDate, eDate)
  {
      function parseDate(input) {
            var parts = input.match(/(\d+)/g);
            return new Date(parts[2], parts[0]-1, parts[1]); //parts[2] is year, parts[0] is month and parts[1] is date.
          }
      var parse_sDate = parseDate(sDate);
  var parse_eDate = parseDate(eDate);
  parse_sDate.setDate(parse_sDate.setFullYear(parse_sDate.getMonth() + 12));
  if(parse_sDate>parse_eDate)
      {
      alert("End date should not be greater than one year from start date");
      }


  }

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用moment.js等库来处理日期。它具有广泛的日期格式和解析功能以及比较助手:

var d1 = moment(document.getElementById('name3').value, 'YYYY-MM-DD');
var d2 = moment(document.getElementById('name4').value, 'YYYY-MM-DD');

var diff = d2.diff(d1, 'years'); 

if (diff > 0) {
   alert("Expiration date should not be greater than one year from start date");
}

另请参阅:Compare two dates in JS