2012-07-17 114 views
-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函数

+3

这个问题的解决方案尝试是(编辑:是的)带标签'php'和'jquery' ,而我也看不到。 – Adi 2012-07-17 08:31:21

+0

''[javascript]'和'[timestamps]'标签会更适合这里... – Lix 2012-07-17 08:31:51

+0

更好的是,您可以在查询中使用间隔而不是此 – Learner 2012-07-17 08:31:59

回答

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

+0

非常好。十分感谢 。正是我想要的。万分感谢 – user1512411 2012-07-23 13:04:20