分享

如何使Asp.Net頁面上的TextBox按下Enter時自動跳下一個註點?

 glxym 2014-04-22

如何使Asp.Net頁面上的TextBox按下Enter時自動跳下一個註點呢


我們可以在Asp.Net頁面上,加一段JavaScript如下, 
其主要的功能為當使用者按下Enter時改成Tab

<
script language=javascript>

function EnterToTab()

{

  if(event.keyCode==13)

    event.keyCode=9;

}

</script>

 

在TextBox上加入onkeydown="EnterToTab();"的屬性

這樣就可以囉~

 

想要每一個 Text Box 的 onkeydown 事件都 Handle 則可以
<script language=javascript>

 window.onload = function init() //視窗載入完成時
 {
  var inputs = document.getElementsByTagName("input"); //取得所有的input
  for(i=0;i<inputs.length;i++) //對每一個input
   if(/^text/.test( inputs[i].type)) //如果是 Text box
    inputs[i].attachEvent("onkeydown", EnterToTab); //加入 onkeydown 事件時做 EnterToTab
 }

</script>

 

想要按上鍵能夠跳上一個TextBox則可以在上述的Function中加下下列判斷

 if(event.keyCode==38) //按下上鍵
 {
  var inputs = document.getElementsByTagName("input"); //取得所有的input
  for(i=0;i<inputs.length;i++) //對每一個input
   if(/^text/.test( inputs[i].type)) //如果是 Text Box
   if(inputs[i]==event.srcElement) //如果是按下按鍵的 Text Box
   {
    inputs[i-1].focus(); //則上一個TextBox取得駐點
    break;
   }
 }

 

為可使Chrome 及 FireFox 支援 不能直接改Tab 所以改成下列方式

 

<script language=javascript>
 window.onload = function init() //視窗載入完成時
 {
 var inputs = document.getElementsByTagName("input"); //取得所有的input
 for(i=0;i<inputs.length;i++) //對每一個input
   if(/^text/.test( inputs[i].type)) //如果是Text box
    if(inputs[i].attachEvent)
     inputs[i].attachEvent("onkeydown", EnterToSibling); //加入onkeydown 事件時做EnterToTab
     else if(inputs[i].addEventListener)
      inputs[i].addEventListener("keydown", EnterToSibling, true); //加入onkeydown 事件時做EnterToTab    
 }
 
 function EnterToSibling(ev)
 {
     var Source = ev.srcElement ? ev.srcElement : ev.target
     if(ev.keyCode==13)
           SearchSibling(true,Source).focus();
     if(ev.keyCode==38) //按下上鍵             
           SearchSibling(false,Source).focus(); //則上一個TextBox取得駐點 
 }
 
 function SearchSibling(IsNext, Source)
 {
     var inputs = document.getElementsByTagName("input"); //取得所有的input
     for(i=0;i<inputs.length;i++) //對每一個input
           if(/^text/.test( inputs[i].type)) //如果是Text Box
                if(inputs[i]==Source) //如果是按下按鍵的Text Box
                {                   
                     if(!IsNext && (i > 0))
                           return inputs[i-1];
                     else if(IsNext && (i + 1) < inputs.length)
                           return inputs[i+1];
                     else
                           return Source;
                }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多