javascript使斷行符號鍵替代tab鍵的游標移動功能

來源:互聯網
上載者:User

javascript使斷行符號鍵替代tab鍵的游標移動功能

部落格分類:

  • javascript
JavaScript

在要改變的頁面中加入如下代碼

Js代碼
  1. <script type="text/javascript">
  2. document.onkeydown=function enterToTab() {
  3. if(event.srcElement.type != 'submit' && event.srcElement.type!="image" && event.srcElement.type != 'textarea' && event.keyCode == 13)
  4. event.keyCode = 9;
  5. }
  6. </script>
<script type="text/javascript"> document.onkeydown=function enterToTab() { if(event.srcElement.type != 'submit' && event.srcElement.type!="image" && event.srcElement.type != 'textarea' && event.keyCode == 13) event.keyCode = 9; } </script>

如果想改變游標移動的順序,改變表單元素tabindex屬性即可

Html代碼
  1. <form action="<%=path %>/ih99" name="registerForm" >
  2. <input type="text" name="username" tabindex="1"/>
  3. <input type="text" name="password" tabindex="3"/>
  4. <input type="text" name="checkCode" tabindex="2"/>
  5. </form>

方法1:from 聽棠.net

用用戶端指令碼在頁面添加document的onkeydown事件,讓頁面在接受到斷行符號事件後,進行tab鍵的功能,即只要把event的keycode由13變為9

vbscript代碼:

<script language="vbscript">

sub document_onkeydown

if event.keycode=13 then

event.keycode=9

end if

end sub

</script>

javascript代碼如下:

<script language="javascript" for="document" event="onkeydown">

<!--

if(event.keycode==13)

event.keycode=9;

-->

</script>

這樣的處理方式,可以實現焦點往下移動,但對於按鈕也起同樣的作用,一般的客戶在輸入完資料以後,跳到按鈕後,最好能直接按"斷行符號"進行資料的提交.因此,對上面的方法要進行一下修改,應該對於"提交"按鈕不進行焦點轉移.而直接啟用提交.

因此我對上面的代碼進行了一個修改,即判斷事件的"源",是否為提交按鈕,代碼如下:

<script language="javascript" for="document" event="onkeydown">

<!--

if(event.keycode==13 && event.srcelement.type!=button &&
event.srcelement.type!=submit && event.srcelement.type!=reset &&
event.srcelement.type!=textarea && event.srcelement.type!=)

event.keycode=9;

-->

</script>

註:這個方法真的很好,實驗成功的

方法2:

圍繞我們要解決的問題,這裡我們重點提一下document、form、elements三個對象及onkeypress事件,document
文檔對象:是指描述當前視窗或指定視窗對象的文檔。它包含了文檔從<head>到</body>的內容。用法:document (當前視窗)或
<視窗對象>.document (指定視窗) ; form 對象:document.forms[] 是一個數組,包含了文檔中所有的表單form
;elements對象:為表單元素對象,<表單對象>.elements
是一個數組,包含了該表單所有的對象;onkeypress事件是一個鍵盤事件,是在使用者按下鍵盤上的鍵時引發的事件。通過這三大對象再配合onkeypress事件就可以完成現我們的要求;

下面是最終的實現代碼清單:
var jumptypearray =new
array("text","password","textarea","checkbox","radio",

"select","select-one","select-multiple","file")//引用頁面上可獲得焦點元素類型
var
debartypearray =new array("submit","reset","button","checkbox","radio",

"select","select-one","select-multiple","hidden")//引用頁面上需排除元素類型
function
instrarray(src,dec)
{//檢查給定串是否在指定字串數組中,如在返回索引號,否返回-1;
for (var i=0 ;
i<dec.length; i++)
{
if (src==dec[i])
{
return i;//定位成功,返回索引號

break;
}
}
return -1; //定位失敗,返回-1
}
function
checkcr(evt)
{//斷行符號響應函數
var evt = (evt) ? evt : ((event) ? event : null);

var node = (evt.target) ? evt.target : ((evt.srcelement) ? evt.srcelement :
null);
var frm=document.forms[0]; //指定form名稱為頁面中的第一個
if ((evt.keycode ==
13) && (instrarray(node.type,jumptypearray)!=-1))

{//判斷當前對象是否為可輸入對象,物件類型數組:jumptypearray
for (var i = 0 ; i <
frm.elements.length; i++)
{//for begin
if
(frm.elements[i].name==node.name)
{//定位當前對象
if ((i+1)<
frm.elements.length)
{//對象數組索引越位判斷
if
(instrarray(frm.elements[i+1].type,jumptypearray)!=-1)
{
//判斷當前對象下一個對象是否為可輸入組件,物件類型數組:jumptypearray
frm.elements[i+1].focus();//設定焦點

if (instrarray(frm.elements[i+1].type,debartypearray)==-1)
{
//過濾不可選中文字物件,物件類型數組:debartypearray
frm.elements[i+1].select();//選中組件常值內容

}
}
return false;//禁止提交表單內容
break;
}
else
{//提交表單內容

return true;
break;
}
}
}//end for
}
}

document.onkeypress = checkcr;

引用說明:將上面的代碼存成檔案,如:webenter.js,然後在要實現斷行符號換行的頁面中寫上:
<script
language="javascript" src="path+webenter.js"></script> 即可。

path:是webenter.js檔案所在路徑。

註:這個沒試,祝好運

 

給個IE8測試過的頁面代碼

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <script type="text/javascript">
 document.onkeydown=function enterToTab() {
 if(event.srcElement.type != 'submit' && event.srcElement.type!="image" && event.srcElement.type != 'textarea' && event.keyCode == 13)
 event.keyCode = 9;
 }

 function ini() //頁面載入時候,第一個單選
 {
           document.getElementById ("a123").focus();
 }

 function checktext()  //如果 廠商拼音頭字母 輸入不為空白,則清空 廠商類別單選框,選擇 廠商拼音字母前的單選框
 {
         var textbox = document.getElementById ("textbox1");
   if(textbox.value != "")
   {
    document.form.leiyi.checked = false;
             document.form.leier.checked = true;
   }

 }

 function twoselone1() //選擇第一單選時候,取消第二個單選
 {
    document.form.leiyi.checked = true;
             document.form.leier.checked = false;
 }
 function twoselone2()  //選擇第二個單選時,取消第一個單選
 {
    document.form.leiyi.checked = false;
             document.form.leier.checked = true;
 }
</script>
 </head>

 <body onload="ini()" >
<form   name="form">
   <input type="radio" id="a123" name="leiyi" tabindex="1" checked="checked" onclick="twoselone1()"/>廠商類別
   <select tabindex="2">
                 <option >1</option>
                 <option >2</option>
                 <option >3</option>
                 <option >4</option>
                 <option >5</option>
   </select><br/>
   <input type="radio" id="a456" name="leier" tabindex="3" onclick="twoselone2()"  />廠商拼音頭字母<input type="text" id="textbox1" tabindex="4" onblur="checktext()" />
   <input type="submit" value="submit" tabindex="5"  onclick="javascript:alert('fuck');"/>

</form>
</body>
</html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.