身份证解析--javascript dreamweaver cs4

题目要求:
1.该网页一打开就弹出对话框显示 “身份证解析”,当用户点击确定按钮后,光标显示在用户名文本框中。
2.首先在用户名文本框中输入用户名,不允许为空,如果为空以警告框的形式提示用户“必须输入用户名 ”,然后光标定位在用户名文本框
3.当在用户名中输入正确格式的用户名后,按回车键光标能够跳转到身份证对话框,否则光标依旧停止在用户名文本框。
4.在身份证对话框中,输入身份证 ,如果出现下面几种情况请以警告框的形式报错,并使得光标依旧停在身份证文本框
(1)如果身份证不足18位,请提示用户“身份证长度必须是18位”
(2)如果身份证中除了最后一位之外,包含有数字之外的字符,则视为格式非法,提示用户“身份证格式不对”
(3)如果身份证最后一位出现了“X”和“数字”之外的字符,则视为格式非法,提示用户“身份证末位格式不对”
(4)如果身份证代表出生年月的位上有不符合实际情况的时间,则视为日期非法,提示用户“日期有误”
5.身份证没有出现上述的情况,则在本题中视为合法,请按身份证的规则(可参阅百度知道
http://zhidao.baidu.com/question/283773962.html
)依次求出身份证中包含的出生日期和性别信息,依次输出到下面的文本框中。
在题目的求解过程中不允许使用正则表达式,不允许改变已经命名的表单和表单域的名称
求代码。。。
最新回答
偏爱

2024-11-23 07:56:03

给你写了一个,调试下来没有问题了。以下是css、html、js三部分
<style type="text/css">
.warning {
display:none;
color:red;
}
#ans {
padding-top:10px;
font-size:18px;
}
</style>

<div>
<div>用户名:<input type="text" id="username" name="username" maxlength="14"/><span class="warning" id="username-warning"></span></div>
<div>身份证号码:<input type="text" id="idcard-number" name="idcard-number" maxlength="18"/><span class="warning" id="idcard-number-warning"></span></div>
<div><span class="warning" id="ans"></span></div>
</div>

<script type="text/javascript">
(function(){
var $ = function(s){return document.getElementById(s);},
show = function(o,s) { //显示提示
o.innerHTML = s;
o.style.display = 'inline';
},
hide = function(o) { //隐藏提示
o.style.display = 'none';
},
isNum = function(a) { //检测是否为数字
for(var i=0;i<a.length;i++) {
var b = a.charAt(i).charCodeAt();
if(b<48 || b>57) return false;
}
return true;
},
inArray = function(a,b){ //检测是否a是否在数组b中
for(var i=0;i<b.length;i++)
if(a == b[i]) return true;
return false;
},
isDate = function(b) { //检测日期是否合法
var y = parseInt(b.substr(0, 4), 10), m = parseInt(b.substr(4, 2), 10), d = parseInt(b.substr(6, 2), 10);
if(y>(new Date()).getFullYear()) return false;
if(m<1 || m>12) return false;
if(d<1) return false;
if(inArray(m,[1,3,5,7,8,10,12]) && d<=31) return true;
if(inArray(m,[4,6,9,11]) && d<=30) return true;
if((!y%400 || (!y%4 && !y%100))?d<=29:d<=28) return true;
return false;
},
username = $('username'),
idcardNumber = $('idcard-number'),
usernameWarning = $('username-warning'),
idcardNumberWarning = $('idcard-number-warning'),
ans = $('ans'),
errorList = { //错误提示信息列表
'username': {
'notNull': '必须输入用户名'
},
'idcardNumber': {
'length': '身份证号码长度必须是18位',
'type': '身份证号码格式不对',
'endType': '身份证号码末位格式不对',
'date': '日期有误'
}
};

if(confirm('身份证解析')) username.focus(); //如果点击确定则用户名输入框出现光标

username.onblur = function() { //当光标离开用户名输入框
var n= username.value.length;
if(n<1) { //如果为空
show(usernameWarning, errorList.username.notNull);
username.focus();
} else {
hide(usernameWarning);
idcardNumber.focus();
}
};
username.onkeydown = function(e) {
if(e.keyCode == 13) username.blur(); //在用户名输入框中按下回车键时执行
};

idcardNumber.onblur = function() { //当光标离开身份证号码输入框
var n= idcardNumber.value.toLowerCase(), errorType;
if(n.length != 18) { //长度不是18
errorType = 'length';
} else if(!isNum(n.substr(0, n.length-1))) { //除了最后一位之外,包含有数字之外的字符
errorType = 'type';
} else if(!isNum(n.substr(-1)) && n.substr(-1)!='x') { //最后一位出现了"X"和"数字"之外的字符
errorType = 'endType';
} else if(!isDate(n.substr(6, 8))) { //日期非法
errorType = 'date';
} else {
hide(idcardNumberWarning);
var t = ['验证通过!'];
t.push(n.substr(6, 4)+'年'+n.substr(10, 2)+'月'+n.substr(12, 2)+'日');
t.push(n.substr(14,3)%2?'男':'女');
show(ans, t.join(' | '));
return ;
}
hide(ans);
show(idcardNumberWarning, errorList['idcardNumber'][errorType]);
idcardNumber.focus();
};
})();
</script>
追问
哥们你太牛X了,能给发个dreamweaver的 html文件不?(lc457351637@126.com)
追答
已发
追问
大哥,那个。。。我给你回了封邮件,你能麻烦看一下么,谢谢~~麻烦了~~
追答
已回