2012-06-23 3 views
0

나는 출생일 생년월일을 필요로하는 등록을 만들고 있는데, 내 질문은 html로 월, 일 및 일의 드롭 다운 상자를 만드는 방법입니다. 그리고 나서 나중에 처리 할 것입니다 그 날을 데이터베이스에 삽입 할 PHP 스크립트에 넣으시겠습니까? 월, 일 및 요일에는 특정 월의 올바른 날짜가 있어야합니다.날짜, 월 및 연도 드롭 다운 상자

+0

[여기] (http://www.plus2net.com/php_tutorial/date-selection.php)의 예가 있습니다. –

답변

4

편집 : Live demo

이 방법에 대해 :

<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. 스크립트가 2 월에 mlength을 계산할 때, 0 또는 1로 28로 캐스트되는 부울 (윤년의 간단한 체크)을 추가합니다. ECMAScript 5 엄격 모드에서는이 발생 및 예외가 발생합니다.
+0

어떻게 날짜와 월을 mm와 dd 형식으로 변환 할 수 있습니까? 달을 위해 나는 선택 가치에서 01-12를 필요로하고 날짜를 위해 나는 선택 가치에서 01-31를 필요로한다. –

1

일반 텍스트 입력 만하십시오. 사람들이 자신의 생일을 correctlly 입력하여 입력하는 것을 신뢰하지 않는다면, 왜 선택 요소를 사용하면 어떤 차이가 있습니까? 기대하는 형식 만 말해주십시오.

<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> 
당신은 그 선택에 일반 입력을 대체적인 버전 스크립트를 포함 할 수 있지만 연도를 선택 약 100 항목을, 당신은 그들 모두를 선택할 때까지 대기해야 할 것이다 합리적인 기간을 충당하기 위해

당신이 일을 넣을 수 있기 전에 년과 달. 적어도 위의 것은 당신에게 날짜의 유효성을 검사하는 간단한 알고리즘을 제공합니다.

+0

그냥 드라이브 다운 투표를 좋아해. 의견이있는 투표를 취소 할 준비가되지 않았다면 무시됩니다. – RobG

관련 문제