小需求,解决方案

 

  
  
需求:   条件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="确 定">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值