简体   繁体   中英

Date,Month and year in Javascript or jQuery

I have javascript code for 3 dropdowns of Day, Month and Year as follows for date of birth:

var monthtext = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];

function populatedropdown(dayfield, monthfield, yearfield) {
    var today = new Date()
    var dayfield = document.getElementById(dayfield)
    var monthfield = document.getElementById(monthfield)
    var yearfield = document.getElementById(yearfield)
    for (var i = 0; i < 31; i++)
        dayfield.options[i] = new Option(i, i + 1)
    dayfield.options[today.getDate()] = new Option(today.getDate(), today.getDate(), true, true) //select today's day
    for (var m = 0; m < 12; m++)
        monthfield.options[m] = new Option(monthtext[m], monthtext[m])
    monthfield.options[today.getMonth()] = new Option(monthtext[today.getMonth()], monthtext[today.getMonth()], true, true) //select today's month
    var thisyear = today.getFullYear()
    for (var y = 0; y < 20; y++) {
        yearfield.options[y] = new Option(thisyear, thisyear)
        thisyear += 1
    }
    yearfield.options[0] = new Option(today.getFullYear(), today.getFullYear(), true, true) //select today's year
}

The year is displaying 20 ascending order. I need to make it 100 in descending order.

How can i change it in the for loop? I tried and got an infinite loop.

Is there any jquery code similar to this other than datepicker ??

Try this, not tested:

for (var y = 100; y >= 0; y--) {
    yearfield.options[y] = new Option(thisyear, thisyear)
    thisyear -= 1
}

Try this function

function populatedropdown(dayfield, monthfield, yearfield) {
var today = new Date()
var dayfield = document.getElementById(dayfield)
var monthfield = document.getElementById(monthfield)
var yearfield = document.getElementById(yearfield)
for (var i = 0; i < 31; i++)
    dayfield.options[i] = new Option(i, i + 1)
dayfield.options[today.getDate()] = new Option(today.getDate(), today.getDate(), true, true) //select today's day
for (var m = 0; m < 12; m++)
    monthfield.options[m] = new Option(monthtext[m], monthtext[m])
monthfield.options[today.getMonth()] = new Option(monthtext[today.getMonth()], monthtext[today.getMonth()], true, true) //select today's month
var thisyear = today.getFullYear();
for (var y = 0; y < 100; y++) {
    yearfield.options[y] = new Option(thisyear, thisyear)
    thisyear -= 1
}
yearfield.options[0] = new Option(today.getFullYear(), today.getFullYear(), true, true) //select today's year

}

You can try reverse For loop.

    for (var y = 100; y >=1; y--) {
    yearfield.options[y] = new Option(thisyear, thisyear)
    thisyear += 1
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM