解决方案 »

  1.   

    一个友好的提示是用户体验的根本。如果业务需求比较严格,里边的校验提示要有严格的文字提示。
    思路看代码:function havebirth(){
        //var xx=shenfenzheng.value; // '取值估计有问题'
        var xx=document.getElementById('shenfenzheng').value;
        if(!checkiddate(xx).res) {
            alert(checkiddate(xx).msg);
            return false;
        }
        if(xx.length==18){
            document.getElementById("shengri").value = xx.substr(6, 4) + "/" + xx.substr(10, 2) + "/" + xx.substr(12, 2);
        }
        if (parseInt(xx.substr(16, 1)) % 2 == 0) {
            document.getElementById("xingbie").value = "女";
        }
        else {
            document.getElementById("xingbie").value = "男";
        }    var yy = xx.indexOf("310");
        if(yy == 0){
            document.getElementById("huji").value = "上海";
        }
        else{
            document.getElementById("huji").value = "非上海";
        }
    }function checkiddate(xx){
        var obj = {
            res : '',
            msg : ''
        }
        var year = xx.substr(6, 4);
        var month = xx.substr(10, 2);
        var day = xx.substr(12, 2);
        if(isNaN(year) || isNaN(month) || isNaN(date)){
            obj.res = false;
            obj.msg = '年月日时间输入错误,';
        }
        if(month > 12 || month < 1) {
            obj.res = false;
            obj.msg = '年月日时间输入错误,';
        };
        if(day < 1 || day > 31){
            obj.res = false;
            obj.msg = '年月日时间输入错误,';
        };
        if((month == 4 || month == 6 || month == 9 || month == 11) && (day > 30)){
            obj.res = false;
            obj.msg = '年月日时间输入错误,';
        };
        if((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && (day > 31)){
            obj.res = false;
            obj.msg = '年月日时间输入错误,';
        };
        if(month == 2){
            if(day > 29){
                obj.res = false;
                obj.msg = '年月日时间输入错误,';
            };
            if((((year % 100 == 0) && (year % 400 != 0)) || (year % 4 != 0)) && (day > 28)){
                obj.res = false;
                obj.msg = '年月日时间输入错误,';
            };    }
        obj.res = true;
        return obj;
    }
      

  2.   


    谢谢你很详细 还有我想问一下为什么取值有问题啊?我试验下来应该是可以的
    试验主流的浏览器,比如:ie 8 9 10,firefox,chrome 试试。