首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在Javascript/jQuery中选择框的错误日期计算器在哪里?

我在Javascript/jQuery中选择框的错误日期计算器在哪里?
EN

Stack Overflow用户
提问于 2011-01-23 09:49:59
回答 4查看 430关注 0票数 0
代码语言:javascript
复制
$(.dateselboxes) .change( function(){

var y; y=$("#year").val();
var m; m=$("#month").val();
var d;

//检查闰年

代码语言:javascript
复制
var leapYear;
if(y%4==0)
{
    if(y%100==0)
    {
        if(y%400==0) {leapYear=true;}
        else {leapYear=false;}
    }
    else {leapYear=true;}
}
else {leapYear=false;}

//计算天数

代码语言:javascript
复制
var dz;
if(m==1 || m=3 || m=5 || m=7 || m=8 || m=10 || m=12) {dz=31;}
else if(m==2)
    {
        if(leapYear==true) {dz=29;}
        else {dz=28;}
    }
else {dz=30;}

//删除最后一个选项几次

代码语言:javascript
复制
switch(dz)
    {
        case 28:
            for(i=0;i<3;i++)
            {$("#day option:last").remove();}
            break;
        case 29:
            for(i=0;i<2;i++)
            {$("#day option:last").remove();}
            break;
        case 30:
            $("#day option:last").remove();
            break;
        default:
            var axaxax=0;
            break;
    }

});

EN

回答 4

Stack Overflow用户

发布于 2011-01-23 11:30:29

在这里,这段代码可以运行(至少在Chrome中是这样的):

代码语言:javascript
复制
var opts = $('#day option').get();

$('#month, #year').change(function() {
    var y = +$('#year').val(),
        m = +$('#month').val(),
        leap = y % 400 === 0 || y % 100 !== 0 && y % 4 === 0 ? true : false,
        days = 30;

    switch ( m ) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            days = 31; break;
        case 2: 
            days = leap ? 29 : 28; break; 
    }

    $('#day').empty().append( opts.slice(0, days) );

});

现场演示: http://jsfiddle.net/83yUF/

票数 2
EN

Stack Overflow用户

发布于 2011-01-23 09:51:38

$(.dateselboxes)!这不会选择任何内容,但是$(".dateselboxes")会选择。jQuery $接受一个字符串作为其参数,表示选择器。

除了你的问题没有解释和大量的代码外,我不知道发生了什么!

票数 1
EN

Stack Overflow用户

发布于 2011-01-23 09:57:05

当您通过检查month #来计算天数时,您使用single =而不是==。替换为:

代码语言:javascript
复制
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) {dz=31;}

单个=会将新值赋给m变量,并始终计算为真,因此我假设您的日期选择器中始终显示为31。作为实践,我喜欢通过反转检查来避免这种情况。例如:if(0 == x),因为你不能将一个偶然的单=赋值给0,这将导致一个javascript错误,从而更容易避免这个错误。

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

https://stackoverflow.com/questions/4771813

复制
相关文章

相似问题

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