Web開發中設置快捷鍵來增強用戶體驗


  從事對日外包一年多以來,發現日本的無論是WinForm項目還是Web項目都注重快捷鍵的使用,日本人操作的時候都喜歡用鍵盤而不是用鼠標去點,用他們的話來說"鍵盤永遠比鼠標來的快",所以他們很注重鍵盤的操作,常見的操作就是按下Tab鍵來切換鼠標的焦點,按下回車鍵時能夠提交表單等,難得今天周末,有時間好好研究一下在web開發中設置快捷鍵,這樣可以方便用戶操作,並且增強用戶體驗。

  在web開發中主要是使用HTML的表單元素自帶的tabindex屬性和使用js設置組合快捷鍵來實現快捷鍵,

一、為HTML的表單元素設置tabindex來實現快捷鍵

有如下的一段HTML代碼:

 1 <div class="login-tr-title">用戶登錄</div>
 2          <table class=" table-refer">
 3             <tr>
 4                 <td class="login-td-title">
 5                     用戶ID
 6                 </td>
 7                 <td>
 8                     <input id="txtUserName" name="txtUserName" type="text" 
 9  tabindex="1" maxlength="30" title="用戶ID"/>
10                 </td>
11             </tr>
12             <tr>
13                 <td class="login-td-title">
14                     密碼
15                 </td>
16                 <td>
17                     <input id="txtPassword" name="txtPassword" type="password"
18  tabindex="2" maxlength="30" title="密碼" />
19                 </td>
20             </tr>
21         </table>
22         <ul class="login-button">
23             <li class="login-main-button">
24                 <asp:Button ID="btnLogin" runat="server" Text="登錄" TabIndex="3" CssClass="s-button"/>
25             </li>
26         </ul>
27 </div>

  這段HTML代碼中每一個表單控件都設置了一個tabindex屬性,屬性值從小到大,控件設置上tabindex屬性后,按下鍵盤上的Tab鍵切換光標時,光標就會按照控件設置的tabindex從小到大(1→2→3)順序來切換了,這樣就可以做到使用鍵盤上的Tab鍵來控制鼠標焦點落到按tabindex設置的順序落到相應的控件上,按照w3c 的規定tabindex的取值范圍是:0~32767。
  在web項目按下回車鍵時是做不到按照tabindex的設置順序來切換鼠標焦點的,為了使按下回車鍵時也能按照tabindex的設置順序來切換鼠標焦點,可以用JavaScript去控制回車鍵的響應動作,實現代碼如下:

 1 $(document).ready(function () {
 2     $("form").keydown(function (e) {
 3         var actE = document.activeElement;
 4         var nxtE = $("[tabindex='" + actE.tabIndex + "']")[0];
 5         if (nxtE != null) {
 6             var oType = nxtE.type;
 7             if (oType == "textarea") return;
 8         }
 9         var tabIndex = actE.tabIndex + 1;
10         var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
11         if (keyCode == 13) {
12             if (nxtE != null) {
13                 oType = nxtE.type;
14                 switch (oType) {
15                     case "button": { if (nxtE.click) nxtE.click(); return false; }
16                     case "select-one": { break; }
17                     case "submit": { return true; }
18                     default: break;
19                 }
20             }
21 
22             nxtE = $("[tabindex='" + tabIndex + "']")[0];
23             if (!nxtE) nxtE = $("[tabindex='0']")[0];
24             if (nxtE != null) {
25                 nxtE.focus();
26 //                                var oType = nxtE.type;
27 //                                switch (oType) {
28 //                                    case "button": { if (nxtE.click) nxtE.click(); break; }
29 //                                    case "select-one": { break; }
30 //                                    case "submit": { return true; }
31 //                                    default: break;
32 //                                }
33             }
34             else {
35                 return true;
36             }
37             return false;
38         }
39     });
40 });

二、使用js 設置組合快捷鍵

  使用js設置快捷鍵的本質就是獲得你要設置的這個鍵的keyCode 的值,如果要加ctrl,alt,shift,那么就添加一個ctrlkey,altKey,shiftKey來判斷下,所以關鍵在於獲取keycode的值。

  (1) 設置 ctrl +enter 提交  

1 if (e.ctrlKey && e.keyCode == 13){  
2    return submit();  
3 }

  (2) 設置  Alt+ 方向鍵 ←提交

1 if (e.altKey&& e.keyCode == 37){  
2     return submit(); 
3 }

  (3) 設置  shift+F10 提交

1 if (e.shiftKey&& e.keyCode == 37){   
2    return submit();
3 
4 }

  (4) 設置enter 提交

1 if (e.keyCode == 13){
2  return submit();   
3 }

  一些常見的快捷鍵的KeyCode:

 1 keycode    8 = BackSpace BackSpace
 2   keycode    9 = Tab Tab
 3   keycode   12 = Clear
 4   keycode   13 = Enter
 5   keycode   16 = Shift_L
 6   keycode   17 = Control_L
 7   keycode   18 = Alt_L
 8   keycode   19 = Pause
 9   keycode   20 = Caps_Lock
10   keycode   27 = Escape Escape
11   keycode   32 = space space
12   keycode   33 = Prior
13   keycode   34 = Next
14   keycode   35 = End
15   keycode   36 = Home
16   keycode   37 = Left
17   keycode   38 = Up
18   keycode   39 = Right
19   keycode   40 = Down
20   keycode   41 = Select
21   keycode   42 = Print
22   keycode   43 = Execute
23   keycode   45 = Insert
24   keycode   46 = Delete
25   keycode   47 = Help  
View Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM