首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要将预选日期值添加到日期字段中

要将预选日期值添加到日期字段中
EN

Stack Overflow用户
提问于 2014-02-22 06:39:03
回答 1查看 91关注 0票数 0

我要在“日期”框中添加预选日期值。我做不到。此外,只能验证年份字段。

我试了很多次,有人能帮忙吗?

代码语言:javascript
复制
<script type="text/javascript">
var ysel = document.getElementsByName("year")[0];
var msel = document.getElementsByName("month")[0];
var dsel = document.getElementsByName("day")[0];
var opt = new Option("Date", "");
dsel.appendChild(opt);
var curr_date = new Date().getFullYear();
for (var i = curr_date; 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();
</script>

<select name="year" class="mandatory" id="year" data-mini="true" data-theme="c">
    <option value="">Year</option>
</select>
<select name="month" class="mandatory" id="month" data-mini="true" data-theme="c">
    <option value="1">Month</option>
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">Mar</option>
    <option value="4">Apr</option>
    <option value="5">May</option>
    <option value="6">Jun</option>
    <option value="7">Jul</option>
    <option value="8">Aug</option>
    <option value="9">Sep</option>
    <option value="10">oct</option>
    <option value="11">Nov</option>
    <option value="12">Dec</option>
</select>
<select name="day" class="mandatory" id="day" data-mini="true" data-theme="c">
    <option value="Date" selected>Date</option>
</select>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 07:34:04

因为删除了一天的所有值,所以每次都需要添加" day“返回:

代码语言:javascript
复制
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];

    // here you delete all day's
    dsel.length = 0;

    // so we add "Day" back here
    var opt = new Option();
    opt.text = "Day";
    opt.value = '';
    dsel.add(opt);

    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);
    }
}

http://jsfiddle.net/47k76/1/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21950776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档