move cursor by key board

    <script language="javascript" type="text/javascript">
    //use keyboard to move cursor
        var cols=6;//5;
        var obj;
        var CanMove=false;
        var key;
        //        var tRow = document.getElementById("amlEntryDataGrid").rows.length - 2;
        //        var tCell = document.getElementById("amlEntryDataGrid").rows[0].cells.length;
       
        function setobj(input)
        {  
         obj=input;
        
         if(obj.getAttribute("type") == "text")
         {
             obj.select();
         }
        }

        function init()
        {
         document.οnkeydοwn=keyDown;
         document.οnkeyup=keyUp;
        }

        function keyDown(DnEvents)
        {
//            window.event.returnValue = false;//cancel all history control
                                   
         var key=window.event.keyCode;
        
         if(key == 37 || key == 38 || key == 39 || key == 40)
         {
             window.event.returnValue = false;//cancel all history control
             if(key==116)
             {//refresh
              window.event.keyCode=0;
              return false;
             }
             if(key==8)
             {//backspace
              if(event.srcElement.tagName!="INPUT" || event.srcElement.getAttribute("type")=="submit")
              {
               event.cancelBubble = true;
               event.returnValue = false;
               return false;
              }
             }
            
             var IsCtrl=window.event.ctrlKey;
             if(IsCtrl)//change false to true
             {
              return;
             }
            
            
             for(var i=0;i<document.forms[0].elements.length;i++)
             {
                 if(document.forms[0].elements[i]==obj)
                 {
                     if(document.forms[0].elements[i].tagName == "select" || document.forms[0].elements[i].getAttribute("type") == "text")
                     {
                         window.event.returnValue = true;
                     }
                     var k=1;
               if (key == 37)
                  {//left
                 
    //              alert(window.event.srcElement.RowIndex+":"+event.srcElement.cellIndex);
    //              alert(document.getElementById("amlEntryDataGrid").rows.length+":"+document.getElementById("amlEntryDataGrid").rows[0].cells.length);
                      if(i>0)
                       {
                           if(obj.getAttribute("id") == "btnDelete")
                           {
                               obj = document.forms[0].elements[i-1];
                               break;
                           }
                           else
                           {
                                        while(document.forms[0].elements[i-k].getAttribute("type") == "submit" || document.forms[0].elements[i-k].disabled == true || document.forms[0].elements[i-k].getAttribute("value") == "Test")
                                        {
                                            k++;
                                     }
                                    
                                     var m = document.forms[0].elements[i-k].getAttribute("name").indexOf("amlEntryDataGrid");
                                     if(m == -1)
                                     {
                                         if(k > 5)
                                         {
                                             obj = obj;
                                         }
                                         else
                                         {
                                             obj=document.forms[0].elements[i-k+1];
                                         }
//                                         obj=document.forms[0].elements[i-k+1];
                                     }
                                     else
                                     {
                                         obj=document.forms[0].elements[i-k];
                                     }
                                 }
                                }
                  }
                  if (key == 38)
                  {//up
                 
                      if(i>cols-1)
                      {
                             k=cols;
                             for( j=i-k;j<i;j++ )
                             {
                                 if(document.forms[0].elements[j] != null)
                                 {
                                     if( document.forms[0].elements[j].getAttribute("type") == "submit" || document.forms[0].elements[j].getAttribute("value") == "Test")
                                     {
                                         k=k+1;
                                     }
                                  }  
                             }
                            
                               while(document.forms[0].elements[i-k].getAttribute("type") == "submit" || document.forms[0].elements[i-k].disabled == true || document.forms[0].elements[i-k].getAttribute("value") == "Test")
                                {
                                    k++;
                                }                               
                            
                             var m = document.forms[0].elements[i-k].getAttribute("name").indexOf("amlEntryDataGrid");
                             if(m == -1)
                             {
                                 var n = 6;
                                 if(document.forms[0].elements[i-k+n].getAttribute("name").indexOf("amlEntryDataGrid") == -1)
                                 {
                                     n--;
                                 }
                                 else
                                 {
                                     if(document.forms[0].elements[i-k+n].disabled == true)
                                     {
                                         n--;
                                     }
                                     else
                                     {
                                         obj=document.forms[0].elements[i-k+n];
                                     }   
                                 }
                             }
                             else
                             {
//                                 obj=document.forms[0].elements[i-k];
                                    var h = 0;
                                    if(document.forms[0].elements[i-k-h].disabled == true)
                                    {
                                        h++;                                                   
                                    }
                                    else
                                    {
                                        while(obj.getAttribute("type") != document.forms[0].elements[i-k-h].getAttribute("type") && obj.getAttribute("id") != "btnSave" && obj.getAttribute("id") != "btnDelete")
                                        {
                                            h++;
                                        }
                                    }
                                    while((obj.getAttribute("id") == "btnSave" || obj.getAttribute("id") == "btnDelete") && document.forms[0].elements[i-k-h].getAttribute("type") != "checkbox")
                                    {
                                        h++;
                                    }
                                    obj = document.forms[0].elements[i-k-h];

                             }
                      }
                  }
                  if (key == 39)
                  {//right
         
                   if(i<document.forms[0].elements.length-1)
                   {
                                while(document.forms[0].elements[i+k].getAttribute("type") == "submit" || document.forms[0].elements[i+k].disabled == true || document.forms[0].elements[i+k].getAttribute("value") == "Test")
                                {
                                    k++;
                             }
                            
                             var m = document.forms[0].elements[i+k].getAttribute("name").indexOf("amlEntryDataGrid");
                             if(m == -1)
                             {
                                 if(obj.getAttribute("id") == "btnSave")
                                 {
                                     obj=document.forms[0].elements[i+k-1];   
                                 }
                                 else if(obj.getAttribute("id") == "btnDelete")
                                 {
                                     obj = obj;
                                 }
                                 else
                                 {
                                     obj=document.forms[0].elements[i+k-2];
                                 }                                
                             }
                             else
                             {
                                 obj=document.forms[0].elements[i+k];
                             }
                   }
                  }
                  if (key == 40)
                  {//down
                 
                      if(i<document.forms[0].elements.length-cols)
                      {
                             k=cols;
                             for( j=i;j<i+k;j++ )
                             {
                                 if(document.forms[0].elements[j] != null)
                                 {
                                     if( document.forms[0].elements[j].getAttribute("type") == "submit" || document.forms[0].elements[j].getAttribute("value") == "Test")
                                     {
                                         k=k+1;
                                     }
                                 }
                                
                             }
                             if(document.forms[0].elements[i+k] != null)
                             {
                                 while(document.forms[0].elements[i+k].getAttribute("type") == "submit" || document.forms[0].elements[i+k].disabled == true || document.forms[0].elements[i+k].getAttribute("value") == "Test")
                                    {
                                        k++;
                                    }
                             }                               
                                if(document.forms[0].elements[i+k] != null)
                                {
                                    var m = document.forms[0].elements[i+k].getAttribute("name").indexOf("amlEntryDataGrid");
                                    if(m == -1)
                                    {
                                        var n = 1;
                                        if(n < 7)
                                        {
                                            if(document.forms[0].elements[i+k-n].getAttribute("name").indexOf("amlEntryDataGrid") == -1)
                                            {
                                                n++;
                                            }
                                            else
                                            {
                                                if(document.forms[0].elements[i+k-n].disabled == true)
                                                {
                                                    n++;                                                   
                                                }                                               
                                            }
                                        }
                                        obj = document.forms[0].elements[i+k-n];
       
                                    }
                                    else
                                    {
//                                        obj=document.forms[0].elements[i+k];
                                        var h = 0;
                                        if(document.forms[0].elements[i+k+h].disabled == true)
                                        {
                                            h++;                                                   
                                        }
                                        else
                                        {
                                            while(obj.getAttribute("type") != document.forms[0].elements[i+k+h].getAttribute("type"))
                                            {
                                                h++;
                                            }
                                        }
                                        obj = document.forms[0].elements[i+k+h];
                                    }                           
                                }                              

                      }
                  }
                     break;
               }
             }
             obj.focus();        
         }
        }

        function keyUp(UpEvents)
        {       
         return false;
        }
       
        function showClear()
        {
            alert();
        }
    </script> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值