1

我正在尝试根据在第一个文本框中输入的日期来验证日期。如果第二个文本框从第一个文本框中输入的日期开始超过一年,那么它应该显示一个警报并将第二个日期字段文本框空白。两个文本框都是只读的,并从日历中获取值。我尝试了以下代码,但即使年份不超过一年,也会弹出警报。另外,是否可以将“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");
      }


  }
4

1 回答 1

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");
}

另请参阅:比较 JS 中的两个日期

于 2013-07-14T17:09:57.447 回答