2012-07-17 170 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