2012-06-23 319 views
0

我正在創建註冊,我需要獲取用戶出生日期,我的問題是,如何在html中創建月,年和日的下拉框,然後再處理那些日子到一個PHP腳本,將其插入數據庫?月份,年份和日期應該有一個月的有效日期?日期,月份和年份下拉框

+0

有一個例子[這裏](http://www.plus2net.com/php_tutorial/date-selection.php),告訴你該怎麼做。 –

回答

4

編輯:​​

如何:

<select name="year"></select> 
<select name="month"> 
    <option value="1">January</option> 
    ... 
</select> 
<select name="day"></select> 

而且JS部分:

var ysel = document.getElementsByName("year")[0], 
    msel = document.getElementsByName("month")[0], 
    dsel = document.getElementsByName("day")[0]; 
for (var i = 2000; i >= 1950; i--) { 
    var opt = new Option(); 
    opt.value = opt.text = i; 
    ysel.add(opt); 
} 
ysel.addEventListener("change", validate_date); 
msel.addEventListener("change", validate_date); 

function validate_date() { 
    var y = +ysel.value, m = msel.value, d = dsel.value; 
    if (m === "2") 
     var mlength = 28 + (!(y & 3) && ((y % 100)!==0 || !(y & 15))); 
    else var mlength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m - 1]; 
    dsel.length = 0; 
    for (var i = 1; i <= mlength; i++) { 
     var opt = new Option(); 
     opt.value = opt.text = i; 
     if (i == d) opt.selected = true; 
     dsel.add(opt); 
    } 
} 
validate_date(); 

我將讓你在PHP的一部分工作。

幾個注意事項:

  1. 我用addEventListener。請記住,IE < 9使用attachEvent代替。您可以使用onchange屬性(不建議使用)或依賴jQuery等一些JS框架來完成這項工作:$(msel).change(validate_date);
  2. 在舊版本的Firefox中,add方法的<select>元素很愚蠢,需要第二個參數null
  3. 當腳本計算mlength二月,它增加了一個布爾值(一個簡單的檢查爲閏年),這是鑄造爲0或1,至28。這就提出了在ECMAScript中5嚴格模式和異常。
+0

如何以mm和dd格式轉換日期和月份。對於月份我需要01-12在期權價值和日期我需要01-31在期權價值。 –

1

只要給他們一個純文本輸入。如果你不相信人們通過打字正確輸入他們的生日,爲什麼使用select元素會有所作爲?只要告訴他們你期望的格式。

例如

<script> 
function validateDate(v) { 
    var bits = v.split('/'); 
    var d = new Date(bits[2], --bits[1], bits[0]); 
    return d.getFullYear() == bits[2] && d.getMonth() == bits[1]; 
} 

function validateForm(form) { 
    if (!validateDate(form.birthday.value)) { 
    alert('Birthday date is not a valid date'); 
    return false; 
    } 
} 
</script> 

<form onsubmit="return validateForm(this);" action=""> 
    <div>Birthday (day/month/year): <input type="text" name="birthday"> 
    <input type="submit"> 
    </div> 
</form> 

您可以包括腳本verison替換與選擇普通的輸入,但是覆蓋在合理期限你必須在今年選擇約100項,那麼你就需要等待,直到他們都選擇一年和一個月才能投入日子。至少上面給出了一個驗證日期的簡單算法。

+0

只是喜歡開車倒推票。如果您不準備通過評論來支持您的投票,它將被忽略。 – RobG

相關問題