parseInt要把进制加上
 
var clickObj;
var months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
var today = new Date();
var todayStr = today.getFullYear()+"-"+months[today.getMonth()]+"-"+today.getDate();
var initYear = today.getFullYear();
var initMonth = today.getMonth();
function selJca(obj){
    clickObj = obj;
    var objOffset = obj.offset();
    if (clickObj.val() != '') {//要更新值,要不永远是今天的值来初始化
        var _arr = clickObj.val().split('-');
        initYear =parseInt( _arr[0],10)
        initMonth = parseInt(_arr[1], 10)-1;
    }

    // fixed absolute 
    $("#djcamain").css({
                        "position": "absolute",
                        "top": objOffset.top + obj.height() + 4,
                        "left": objOffset.left
                        });
                         
    $("#djcamain").fadeIn();
     
    $("#txYear").attr("value", initYear);
     
    $("#txMonth").empty();
     
    for (var i = 0; i < months.length; i++){
        if (i == initMonth){
            $("<option selected='selected' value='"+months[i]+"'>"+months[i]+"月</option>").appendTo($("#txMonth"));
        }else{
            $("<option value='"+months[i]+"'>"+months[i]+"月</option>").appendTo($("#txMonth"));
        }
    }
    createCalBody();
 
    $("#txMonth").change(function(){
        initMonth = parseInt($("#txMonth").val()) - 1;
        createCalBody();
    });
     
    $("#btJcaClose").click(function(){
        $("#djcamain").fadeOut();
    });
     
    $("#btJcaToday").click(function(){
        var todayDate = today.getDate();
        if (today.getDate() < 10){
            todayDate = "0"+today.getDate();
        }
        $(clickObj).val(today.getFullYear()+"-"+months[today.getMonth()]+"-"+todayDate);
        $("#djcamain").fadeOut();
    });
     
    if($.browser.msie){
        document.getElementById("txYear").attachEvent("onpropertychange",yearChange);
    }else{
        document.getElementById("txYear").addEventListener("input",yearChange,false);
    }
 
    $("#jcatitle").mouseover(function(){
        $(this).css({"cursor": "move"});
    });
         
    $("#jcatitle").mousedown(function(event){   
        var offset=$("#djcamain").offset();   
        x1 = event.clientX-offset.left;   
        y1 = event.clientY-offset.top;   
 
        $("#jcatitle").mousemove(function(event){   
           $("#djcamain").css("left",(event.clientX-x1)+"px");   
           $("#djcamain").css("top",(event.clientY-y1)+"px");   
        });   
 
        $("#jcatitle").mouseup(function(event){   
            $("#jcatitle").unbind("mousemove");   
        });   
 
    });   
 
}
 
function yearChange(){
    if ($("#txYear").val() != "" && !isNaN($("#txYear").val()) && $("#txYear").val().length == 4){
        initYear = $("#txYear").val();
        createCalBody();
    }
}
 
function createCalBody(){
     
    var dayNumOfMonth = 30;
    var year = $("#txYear").val();
    var month = $("#txMonth").val();
    var thirtyOneDayOfMonth = "01,03,05,07,08,10,12,";
    if (thirtyOneDayOfMonth.indexOf(month+",") >= 0){
        dayNumOfMonth = 31;
    }
 
    if (month == "02"){
        dayNumOfMonth = 28;
        if (parseInt(year) % 4 == 0 && parseInt(year, 10) % 400 == 0 && parseInt(year) % 100 != 0) {
            dayNumOfMonth = 29;
        }
    }    var oneDay = new Date(parseInt(year, 10), parseInt(month, 10) - 1, 1);
    // 返回值是 0(周日) 到 6(周六) 之间的一个整数
    var oneDayOfWeek = oneDay.getDay();
    var row = -1;
    var curTr = "<tr class='tab_tr'>";              
    curTr += "<td width='60px'><font color='#ff0000'><strong>日</strong></font></td>";
    curTr += "<td width='60px'>一</td>";
    curTr += "<td width='60px'>二</td>";
    curTr += "<td width='60px'>三</td>";
    curTr += "<td width='60px'>四</td>";
    curTr += "<td width='60px'>五</td>";
    curTr += "<td width='60px'><font color='#ff0000'><strong>六</strong></font></td>";
    curTr += "</tr>";
                           
    curTr += "<tr class=jca_data>";
    for (var i = 0; i < oneDayOfWeek; i++){
        row++;
        curTr += "<td width='60px'>&nbsp;</td>";
    }
 
    for (var i = 0; i < dayNumOfMonth; i++){
        row++;
        var curDay = i + 1;
        if (curDay < 10){
            curDay = "0"+curDay;
        }
        if (todayStr == year+"-"+month+"-"+curDay){
            curTr += "<td width='60px' align='center' class='jca_today' valign='middle'>"+curDay+"</td>";
        }else{
            curTr += "<td width='60px' align='center' valign='middle'>"+curDay+"</td>";
        }
         
        if (row == 6){
            row = -1;
            curTr += "</tr><tr class=jca_data>";
        }
    }
 
    for (var i = 0; i < 6 - row; i++){
        curTr += "<td width='60px'>&nbsp;</td>";
    }
    if (row != 6){
        curTr += "</tr>";
    }
 
    $("#calbody").html(curTr);
     
    $(".jca_data td").mouseover(function(){
        $(this).css({"cursor": "hand"});
        //如果鼠标移到class为stripe的表格的tr上时,执行函数
        $(this).addClass("jca_td_over");}).mouseout(function(){
        //给这行添加class值为over,并且当鼠标一出该行时执行函数
        //移除该行的class   
        $(this).removeClass("jca_td_over");
    })
     
    $(".jca_data td").click(function(){
        if ($(this).html().length == 2 && $("#txYear").val() != "" && $("#txMonth").val() != ""){
            $(clickObj).val($("#txYear").val()+"-"+$("#txMonth").val()+"-"+$(this).html());
        }
        $("#djcamain").fadeOut();
    });
}

解决方案 »

  1.   

    对了, 选择日期的时候忘记赋值了, 所以也保存不了上次选择的年月, 应该加上。
    $(".jca_data td").click(function(){
    if ($(this).html().length == 2 && $("#txYear").val() != "" && $("#txMonth").val() != ""){
    $(clickObj).val($("#txYear").val()+"-"+$("#txMonth").val()+"-"+$(this).html());
    initYear = parseInt($("#txYear").val(), 10);
    initMonth = parseInt($("#txMonth").val(), 10);

    }
    $("#djcamain").fadeOut();
    });