需求: 条件1:(3-4)个人; 条件2:在满足条件1的情况下,必须满足(1个成年男人,1个成年女人,1个或两个未满12周岁的孩子); 否则验证不允许通过。 需求转换:x:男,y:女,i:成年人,j:未成年人 则以下情况可通过: xi,yi,xj xi,yi,yj xi,yi,xj,xj xi,yi,xj,yj xi,yi,yj,yj 请各位想想用js如何实现(也可以用jQuery等js框架)。
|
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" >
$(function(){
$("input[type='button']").click(function(){
var famliyMembers = "";
//x:男,y:女,i:成年人,j:未成年人
$("table tr").each(function(i){
var tr = $(this);
if(i>0){
var age = tr.find("td").eq(0).find("input").val();
// age = jsGetAge(age);
var sex = tr.find("td").eq(1).find("select").val();
if(age >= 18) famliyMembers += ((sex == '男')?"xi":"yi")+",";
if(age >=12 && age < 18) famliyMembers += "xx,";
if(age < 12 ) famliyMembers += ((sex == '男')?"xj":"yj")+",";
}
});
//var reg=/(xi,yi,([xy]j,?){1,2})|(yi,xi,([xy]j,?){1,2})|(([xy]j,?){1,2},yi,xi)|(([xy]j,?){1,2},xi,yi)$/;
// var reg =/(((([x,y]{1}j){1,2}+,)|([x,y]{1}i{1,2}+,)))(((xi,yi,)|(yi,xi,)))|((((xi,yi,)|(yi,xi,))((([x,y]{1}j){1,2}+,)|([x,y]{1}i{1,2}+,))))$/;
var reg = /^(([xy]{1}i,)|(i[xy]{1},)){2}(([xy]{1}j,)|(j[xy]{1},)){1,2}$/;
//var reg = /(((xi,yi,)|(yi,xi,))((([x,y]{1}j){1,2}+,)|([x,y]{1}i{1,2}+,)))$/;
//var reg=/xiyi[xj]{1,2}|xiyi[yj]{1,2}$/;
famliyMembers = famliyMembers.substring(0,famliyMembers.length-1);
//alert(famliyMembers);
$("p").html(famliyMembers);
if(!reg.test(famliyMembers)){
alert("家庭计划:必须夫妻二人携带两名以下未满12周岁儿童");return;
}
alert("正确"+famliyMembers);
});
});
//JS日期系列:根据出生日期 得到周岁年龄
//参数strBirthday已经是正确格式的2007.02.09这样的日期字符串
//后续再增加相关的如日期判断等JS关于日期处理的相关方法
function jsGetAge(strBirthday)
{
var returnAge;
var strBirthdayArr=strBirthday.split("-");
var birthYear = strBirthdayArr[0];
var birthMonth = strBirthdayArr[1];
var birthDay = strBirthdayArr[2];
d = new Date();
var nowYear = d.getFullYear();
var nowMonth = d.getMonth() + 1;
var nowDay = d.getDate();
if(nowYear == birthYear)
{
returnAge = 0;//同年 则为0岁
}
else
{
var ageDiff = nowYear - birthYear ; //年之差
if(ageDiff > 0)
{
if(nowMonth == birthMonth)
{
var dayDiff = nowDay - birthDay;//日之差
if(dayDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
else
{
var monthDiff = nowMonth - birthMonth;//月之差
if(monthDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
}
else
{
returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
}
}
return returnAge;//返回周岁年龄
}
</script>
<table>
<tr>
<td>年龄</td>
<td>性别</td>
</tr>
<tr>
<td><input type="text"></td>
<td><select><option>男</option><option>女</option></select></td>
</tr>
<tr>
<td><input type="text"></td>
<td><select><option>男</option><option>女</option></select></td>
</tr>
<tr>
<td><input type="text"></td>
<td><select><option>男</option><option>女</option></select></td>
</tr>
<tr>
<td><input type="text"></td>
<td><select><option>男</option><option>女</option></select></td>
</tr>
</table>
<p></p>
<input type=button value="确 定">