从事对日外包一年多以来,发现日本的无论是WinForm项目还是Web项目都注重快捷键的使用,日本人操作的时候都喜欢用键盘而不是用鼠标去点,用他们的话来说"键盘永远比鼠标来的快",所以他们很注重键盘的操作,常见的操作就是按下Tab键来切换鼠标的焦点,按下回车键时能够提交表单等,难得今天周末,有时间好好研究一下在web开发中设置快捷键,这样可以方便用户操作,并且增强用户体验。  在web开发中主要是使用HTML的表单元素自带的tabindex属性和使用js设置组合快捷键来实现快捷键,
一、为HTML的表单元素设置tabindex来实现快捷键有如下的一段HTML代码:<div class="login-tr-title">用户登录</div>

<table class=" table-refer">

<tr>

<td class="login-td-title">

用户ID

</td>

<td>

<input id="txtUserName" name="txtUserName" type="text"

tabindex="1" maxlength="30" title="用户ID"/>

</td>

</tr>

<tr>

<td class="login-td-title">

密码

</td>

<td>

<input id="txtPassword" name="txtPassword" type="password"

tabindex="2" maxlength="30" title="密码" />

</td>

</tr>

</table>

<ul class="login-button">

<li class="login-main-button">

<asp:Button ID="btnLogin" runat="server" Text="登录" TabIndex="3" CssClass="s-button"/>

</li>

</ul>

</div>

复制代码这段HTML代码中每一个表单控件都设置了一个tabindex属性,属性值从小到大,控件设置上tabindex属性后,按下键盘上的Tab键切换光标时,光标就会按照控件设置的tabindex从小到大(1→2→3)顺序来切换了,这样就可以做到使用键盘上的Tab键来控制鼠标焦点落到按tabindex设置的顺序落到相应的控件上,按照w3c 的规定tabindex的取值范围是:0~32767。
  在web项目按下回车键时是做不到按照tabindex的设置顺序来切换鼠标焦点的,为了使按下回车键时也能按照tabindex的设置顺序来切换鼠标焦点,可以用JavaScript去控制回车键的响应动作,实现代码如下:$(document).ready(function () {

$("form").keydown(function (e) {

var actE = document.activeElement;

var nxtE = $("[tabindex='" + actE.tabIndex + "']")[0];

if (nxtE != null) {

var oType = nxtE.type;

if (oType == "textarea") return;

}

var tabIndex = actE.tabIndex + 1;

var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;

if (keyCode == 13) {

if (nxtE != null) {

oType = nxtE.type;

switch (oType) {

case "button": { if (nxtE.click) nxtE.click(); return false; }

case "select-one": { break; }

case "submit": { return true; }

default: break;

}

}

nxtE = $("[tabindex='" + tabIndex + "']")[0];

if (!nxtE) nxtE = $("[tabindex='0']")[0];

if (nxtE != null) {

nxtE.focus();

// var oType = nxtE.type;

// switch (oType) {

// case "button": { if (nxtE.click) nxtE.click(); break; }

// case "select-one": { break; }

// case "submit": { return true; }

// default: break;

// }

}

else {

return true;

}

return false;

}

});

});

复制代码二、使用js 设置组合快捷键  使用js设置快捷键的本质就是获得你要设置的这个键的keyCode 的值,如果要加ctrl,alt,shift,那么就添加一个ctrlkey,altKey,shiftKey来判断下,所以关键在于获取keycode的值。
  (1) 设置 ctrl +enter 提交  

if (e.ctrlKey && e.keyCode == 13){  
   return submit();  
   }
  (2) 设置  Alt+ 方向键 ←提交

if (e.altKey&& e.keyCode == 37){ 
    return submit();
}
  (3) 设置  shift+F10 提交

if (e.shiftKey&& e.keyCode == 37){   
return submit();

}
  (4) 设置enter 提交

if (e.keyCode == 13){
return submit();   
}
  一些常见的快捷键的KeyCode:keycode 8 = BackSpace BackSpace

  keycode 9 = Tab Tab

  keycode 12 = Clear

  keycode 13 = Enter

  keycode 16 = Shift_L

  keycode 17 = Control_L

  keycode 18 = Alt_L

  keycode 19 = Pause

  keycode 20 = Caps_Lock

  keycode 27 = Escape Escape

  keycode 32 = space space

  keycode 33 = Prior

  keycode 34 = Next

  keycode 35 = End

  keycode 36 = Home

  keycode 37 = Left

  keycode 38 = Up

  keycode 39 = Right

  keycode 40 = Down

  keycode 41 = Select

  keycode 42 = Print

  keycode 43 = Execute

  keycode 45 = Insert

  keycode 46 = Delete

  keycode 47 = Help  

Web开发中设置快捷键来增强用户体验的更多相关文章

  1. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  2. 移动Web 开发中的一些前端知识收集汇总

    在开发DeveMobile 与EaseMobile 主题 的时候积累了一些移动Web 开发的前端知识,本着记录总结的目的,特写这篇文章备忘一下. 要说移动Web 开发与传统的PC 端开发,感觉也没什么 ...

  3. (转)Web开发中最致命的小错误

    Web开发中最致命的小错误 现在,有越来越多所谓的“教程”来帮助我们提高网站的易用性.本文收集了一些在 Web 开发中容易出错和被忽略的小问题,并且提供了参考的解决方案,以便于帮助 Web 开发者更好 ...

  4. [译]如何在Web开发中使用Python

    [译]如何在Web开发中使用Python 原文:HOWTO Use Python in the Web 摘要 这篇文档展示了Python如何融入到web中.它介绍了几种Python结合web服务器的方 ...

  5. SpringBoot学习(七)-->SpringBoot在web开发中的配置

    SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...

  6. Web开发中的18个关键性错误

    前几年,我有机会能参与一些有趣的项目,并且独立完成开发.升级.重构以及新功能的开发等工作. 本文总结了一些PHP程序员在Web开发中经常 忽略的关键错误,尤其是在处理中大型的项目上问题更为突出.典型的 ...

  7. 第123天:移动web开发中的常见问题

    一.函数库 underscoreJS _.template: <ol class="carousel-indicators"> <!--渲染的HTML字符串--& ...

  8. MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。

    MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得. 之前的项目比较简单,多是用JSP .Servlet + JDBC 直接搞定,在项目中尝试用 Strut ...

  9. asp.net mvc 3 配置全局错误处理 Web.config中设置CustomError

    摘自: http://www.myexception.cn/web/1130191.html asp.net mvc 配置全局异常处理 Web.config中设置CustomError Web.con ...

随机推荐

  1. WPF之快速实现拖拽功能

    场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件. 实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为 ...

  2. Ajax动态滚动加载数据

    看新浪微博,人人网都有这样的效果:滚动条滚动到最下面的时候,新的数据就被自动加载出来了,今天亲自尝试了一下这个效果的实现. 最开始在CSDN上写了一版,功能比较简单,今天又增加了一个小功能:翻页到指定 ...

  3. struts2与struts1整合,Unable to load configuration. - interceptor-ref ... struts.xml

    struts.xml中为了与struts1的MVC模式整合,需要类似如下的拦截器的引用 <interceptor-stack name="integration"> & ...

  4. JWFD开源项目官方网站预览

    自己做的...感觉还比较正规哈....JWFD开源项目还是需要一个官方网站的...

  5. 为laravel5.1生产环境linux从源代码安装PHP

    laravel5.1正式发布,该版本号称是第一个LTS的版本,它对环境的要求也比较高,至少要PHP5.59以上. 现在网上找了很久,只能自己从头安装新版本的PHP yum install libmcr ...

  6. git deployment strategy

    http://nicolasgallagher.com/simple-git-deployment-strategy-for-static-sites/ You can still ignore a ...

  7. R语言实战读书笔记(一)R语言介绍

    1.3.3 工作空间 getwd():显示当前工作目录 setwd():设置当前工作目录 ls():列出当前工作空间中的对象 rm():删除对象 1.3.4 输入与输出 source():执行脚本

  8. UVa 11624 (BFS) Fire!

    也是一个走迷宫的问题,不过又有了点变化. 这里迷宫里有若干把火,而且火每秒也是向四个方向蔓延的.问人是否能走出迷宫. 我用了两遍BFS,第一遍把所有着火的格子加入队列,然后计算每个格子着火的时间. 第 ...

  9. Asp.Net验证码3

    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...

  10. windowsUI的总结

    1,MFC 基于VC6.0的微软基础库 2,WPF 做绚丽界面一律用WPF,做一般绚丽界面用WinForm,做windows标准界面用MFC WPF也有个致命缺点,就是要.net framework支 ...