各位好
 近日在JS页面校验开发中,遇到一个对对多个区间类文本框,判断是否连续喝重叠的问题,请各位大虾帮忙看下,有什么高招,先谢了~
需要达到的效果:
在页面上有以下几组年龄段起始和终止年龄段的文本框,需要校验:
 (1)10~50之间的区间是否都覆盖到了(比如:夏利中31~34就没被覆盖)。
 (2)各个年龄段之间是否有交替(比如:年龄段1和2就在15~20岁之间交替)
要校验的输入对象年龄段1:   10~20年龄段2:   15~30年龄段3: 35~50

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
    function addage(){
    var div=document.getElementById("test");
    var input=document.createElement("input");
    input.type="text";
    input.onblur=check;
    div.appendChild(input);
    var br=document.createElement("br");
    div.appendChild(br);
    }
    function check(){
    var value=this.value;
    var reg=/^[1-9]\d*~[1-9]\d*$/;
    if(!reg.test(value)){
    alert("格式不对");
    this.value="";
    }
    var div=document.getElementById("test");
    var text=div.getElementsByTagName("input");
    var target=this.value.split("~");
    target[0]=parseInt(target[0]);
    target[1]=parseInt(target[1]);
    if(target[0]>target[1]){
    alert("范围不对");
    this.value="";
    return;
    }
    for(var i=0;i<text.length;i++){
    if(this!=text[i]){
    var range=text[i].value.split("~");
    range[0]=parseInt(range[0]);
    range[1]=parseInt(range[1]);
    if(target[0]<=range[1]&&target[0]>=range[0]){
    alert(target[0]+"与第"+(i+1)+"个年龄段交替");
    this.value="";
    }else if(target[1]<=range[1]&&target[1]>=range[0]){
    alert(target[1]+"与第"+(i+1)+"个年龄段交替");
    this.value="";
    }else if(target[0]<range[0]&&target[1]>range[1]){
    alert("包围了第"+(i+1)+"个年龄段");
    this.value="";
    }

    }
    }
    }
    function checks(){
    var t=[];
    var div=document.getElementById("test");
    var text=div.getElementsByTagName("input");
    for(var i=0;i<text.length;i++){
    var range=text[i].value.split("~");
    t.push(range[0]);
    t.push(range[1]);
    }
    t.sort(asc);
    for(var i=2;i<t.length;i=i+2){
    if(t[i]-t[i-1]>1){
    alert(t[i-1]+"到"+t[i]+"缺少值");
    return;
    }
    }
    }
    function asc(a,b){
    return a-b;
    }
    </script>
    </head><body>
    <div id="test">
    </div>
    <input type="button" value="增加年龄段" onclick="addage()"><br/>
    <input type="button" value="校验" onclick="checks()">
    </body>
    </html>
    貌似只能挨个测啊   这样试试  等等高手  哈