-1

谢谢大家。我有一种将日期作为输入的表格。我必须制作一项功能,在用户输入日期的 30 天之前发送电子邮件。我正在制作一个隐藏字段,它将用户输入的日期转换为少 30 天,然后在数据库中提交代码:

    <input type ="hidden" name="date_time" onblur="setExpDate(this.value)"/> 

    <script type="text/javascript">
      function setExpDate(){
    // set number of days to add
    var interval = 30;
    var userdate=<?php echo $_POST['effd'];

    expDate.setDate(userdate.getDate() - interval);
    return expDate ;
};
</script>


<input type="hidden" size="10" maxlength="10" id="date_time" name="date_time" value="setExpDate()">
 date entered by user<input type="text" name="effd"/>

please check the code where i am making mistake and if you have any other solution .

非常感谢只是为了提供信息,我正在使用 joomla 并制作自己的 php 函数

4

1 回答 1

0

在这里,我在http://codebins.com/bin/4ldqpah上为上述问题完成了完整的垃圾箱

HTML:

<div id="panel">
  <form id="frm1" method="post">
    <input type="hidden" id="h_date" name="h_date" />
    Enter Date: 
    <input type="text" name="txtdate" id="txtdate" onblur="setExpDate(this.value);" size="15"/>
    <div id="hiddendiv">
    </div>
  </form>
</div>

CSS:

#panel form{
  border:1px solid #454545;
  padding:10px;
  width:350px;
  background:#a1a6a4;
}
#panel input{
  border:1px solid #456699;
}
#panel input:focus{
  background:#afffff;
}

Javascript:

 function setExpDate(strdate) {
      if (strdate != "" && strdate != null && typeof(strdate) != "undefined") {

          if (isValidDate(strdate)) {
              var interval = 30;
              var userdate = new Date(strdate);
              var newdate = new Date(userdate.getTime() - 30 * 24 * 60 * 60 * 1000);
              document.getElementById("h_date").value = (newdate.getMonth() + 1) + "/" + newdate.getDate() + "/" + newdate.getFullYear();
              document.getElementById("hiddendiv").innerHTML = "Set Hidden Date:" + document.getElementById("h_date").value + " (Before 30 days)";

          } else {
              alert("Please enter valid date.");
          }
      }

  }

  function isValidDate(dateStr) {

      // Checks for the following valid date formats:
      // MM/DD/YYYY
      // Also separates date into month, day, and year variables
      var datePat = /^(\d{2,2})(\/)(\d{2,2})\2(\d{4}|\d{4})$/;

      var matchArray = dateStr.match(datePat); // is the format ok?
      if (matchArray == null) {
          alert("Date must be in MM/DD/YYYY format")
          return false;
      }

      month = matchArray[1]; // parse date into variables
      day = matchArray[3];
      year = matchArray[4];
      if (month < 1 || month > 12) { // check month range
          alert("Month must be between 1 and 12");
          return false;
      }
      if (day < 1 || day > 31) {
          alert("Day must be between 1 and 31");
          return false;
      }
      if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
          alert("Month " + month + " doesn't have 31 days!")
          return false;
      }
      if (month == 2) { // check for february 29th
          var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
          if (day > 29 || (day == 29 && !isleap)) {
              alert("February " + year + " doesn't have " + day + " days!");
              return false;
          }
      }
      return true; // date is valid
  }

请在http://codebins.com/bin/4ldqpah上尝试解决方案

于 2012-07-17T14:09:46.023 回答