天天看點

解決WEB頁面上"焦點控制"一法

解決WEB頁面上"焦點控制"一法

對于B/S的系統,在頁面控制上不如C/S系統那麼控制靈活,就如輸入的焦點問題,客戶都很想通過鍵盤對資料進行錄入,這樣的要求我想100個客戶中會有90個吧.

是以解決焦點擷取問題是必要的.大家可以從網上找到一些方法,不過都比較麻煩,我現在介紹一種很友善的.效果也很不錯的方法給大家.

我前段時間看了MS的ASP.NET講座,在裡面談到了如何讓"Enter鍵"使文本框的焦點一個個下移.其中提了三種方法,最好的一種是這樣的:

 用用戶端腳本在頁面添加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!='')

     event.keyCode=9;

-->

</script>

判斷是否為button, 是因為在HTML上會有type="button"

判斷是否為submit,是因為HTML上會有type="submit"

判斷是否為reset,是因為HTML上的"重置"應該要被執行

判斷是否為空,是因為對于HTML上的"<a>連結"也應該被執行,這種情況發生的情況不多,可以使用"tabindex=-1"的方式來取消連結獲得焦點.

以上是我個人觀點,我是在ASP.NET中進行系統開發的,我會把這個用戶端腳本放在"BasePage"中,其他頁面都會繼承他,進而可以在很多頁面進行控制. 如有其他好辦法,希望大家讨論.

                                          聽棠

                                          2004-5-13

                                          [email protected]

                                BLOG:http://tintown.blogbus.com

繼續閱讀