51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> java >> 文章正文

有几行几列的一个checkbox 能否围成矩形

更新时间:2012-4-12:  来源:51代码网

有几行几列的一个checkbox  
 
  比如这样 1 2 3
  4 5 6
  7 8 9
  10 11 12 

的checkbox

我选 1245 算是矩形 选1379 不算矩形(因为没有铺满里面) 选123456789才算矩形

没成矩形弹出框就行。

求这样的一个算法。。
有思路不会代码了、

从选择的几个点中找出最边的俩个点
然后把这俩个点作为一个矩形先算出里面有几个格子。
最后找出点击的checkbox有多少个。来匹配?

不知道我是否想错了。

求教育。


而且checkbox的value被占用了。行和列只能放id上了。。


 <table style='width:100%;'>

  <%
  int index = 0;
  for (int i = 0; i < 10; i++) {
 
 
  %>
  <tr>
  <% for (int j = 0; j < 10; j++) {
  int blockIndex = index++;
  %>
  <td>

  <div style='width:100%;height: 100%;border:1px dashed black;' align="center">
  位置<%=blockIndex+ 1%>
  <input type="checkbox" name='subBlockIndex' value="<%=blockIndex%>"
  id='<%=i%><%=j%>'/>
  </div>

  </td>
  <% } %>
  </tr>
  <% } %>

  </table>

hidden var e=document.getElementsByTagName("input");
 var arr = new Array();

 var hasNoneChecked = true;
  var num = 0;

 

 for(var i=0; i<e.length; i++){
                         if(e[i].type=='checkbox'&&e[i].checked&&e[i].name!="checkboxAllName"){
                               
    arr.push(e[i].id);   
                               
 }


   if(hasNoneChecked){
                         return alert("请选择一个位置");
                        }else{

                                //判断是否是矩形 TODO  还没判断好。
                                //           x
                                //      x    x       x
                                //      x            x
                                //类似这样图形不行。
                                  arr.sort();
                                  //alert(arr);
                                  min = arr[0];
                                  //alert(arr[0].charAt("_"));
                                  minx = arr[0].substring(0,arr[0].indexOf("_"));  //minx
                                  miny = arr[0].substring(arr[0].indexOf("_")+1,arr[0].length);//miny
                                  max = arr[arr.length-1];
                                  maxx = arr[arr.length-1].substring(0,arr[arr.length-1].indexOf("_"));
                                  maxy = arr[arr.length-1].substring(arr[arr.length-1].indexOf("_")+1,arr[arr.length-1].length);


                                 
                                //alert("minx="+minx);
                                //alert("miny="+miny);
                                //alert("maxx="+maxx);
                                //alert("maxy="+maxy);
                                if(minx == maxx){
                                    //alert("横排");
                                    tmpy = maxy-miny;
                                    if(tmpy+1 == arr.length){
                                            formObject.submit();
                                        }else{
                                            return    alert("请围成一个矩形");
                                            }
                                    }else{
                               
       
                                        tmpx = maxx-minx;
                                        //alert(tmpx);
                                        tmpy = maxy-miny;
                                        //alert(tmpy);
                                        temp = (tmpx+1)*(tmpy+1);
                                        //alert(temp);
                                        if(arr.length == temp){
                                            formObject.submit();
                                            }else {
                                                return    alert("请围成一个矩形");
                                                }   }  }

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |