Tab键控制光标在指定范围内移动
来源:互联网 发布:js给下拉列表赋值 编辑:程序博客网 时间:2024/05/29 15:39
关于javascript实现Tab键控制光标在指定范围内移动
问题的提出:在IE浏览器中,模态框显示出来后,父画面的操作停止,画面能够操作的部分仅仅是在模态框内部,Tab键移动光标位置也是如此。但是在Chrome与Firefox中,模态框是用一些插件来实现的,例如jQuery EasyUI的Dialog等。实现了模态框的表示,但是与IE的模态框相比稍显不足,仍然可以Tab键操作父页面,达不到跟IE一样的效果,让画面只能操作模态框内部。 以下是我自己找到并补充之后的一段代码,能够实现Tab键控制光标在指定范围内移动,通过捕获Tab键的事件来添加处理,限制光标的移动范围。 这样的话,在插件实现模态框的基础上追加Tab键的控制,可以在模态框表示的情况下,有效的阻止Tab键操作父页面。
代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Tab move within specified range</title><head><script src="http://code.jquery.com/jquery-1.8.0.min.js"></script><title>test</title></head><form action="#"><p id="pp"><input type="text"/><input type="button" value="pp"/><button>remove P</button><select></select><a href="#">abc</a><a href="#">abc</a><a href="#">abc</a></p><p id="qq"><button>remove Q</button><a href="#">abc</a><input type="button" value="pp"/><a href="#">abc</a><select></select><input type="text"/><a href="#">abc</a></p><p id="rr"><a href="#">abc</a><a href="#">abc</a><a href="#">abc</a></p><p>a</p><button onclick="remove()">remove p</button></form><script type="text/javascript">var tabkeyMove = (function ( createListener, get, next ) { return function ( id ) { var listener = createListener( id, get, next ); document.getElementById( id )./*@if( @_jscript ) attachEvent('on' + @else@*/ addEventListener(/*@end@*/ 'keydown', listener, true); };})( function ( tid, get, next ) { return function (evt) { var e = evt./*@if( @_jscript ) srcElement @else@*/ target /*@end@*/; var keyCode = evt./*@if( @_jscript ) keyCode @else@*/ which /*@end@*/; var shift = evt.shiftKey; var p, c; if( keyCode == 9 ) { if( p = get( next( e, shift ), 'id', tid ) ) return; evt./*@if( @_jscript ) returnValue = false @else@*/ preventDefault() /*@end@*/; (p = next( e.parentNode, shift )) && p.focus(); } }; }, function (node, type, val) { return node ? (val == node[type]) ? node: arguments.callee(node.parentNode, type, val): null; }, function ( n, b ) { var e; while (n) { if(!b){ e = n.firstChild || n.nextSibling if (! e) { do { if ((n = n.parentNode) && n.nodeName == 'BODY') return null; } while (! (e = n.nextSibling)) } }else{ e = n.lastChild || n.previousSibling if (! e) { do { if ((n = n.parentNode) && n.nodeName == 'BODY') return null; } while (! (e = n.previousSibling)) } } n = e; if( 'A' == n.nodeName || 'INPUT' == n.nodeName || 'SELECT' == n.nodeName || 'BUTTON' == n.nodeName || 'TEXTAREA' == n.nodeName) return n; } return null; });tabkeyMove('pp');tabkeyMove('qq');tabkeyMove('rr');</script></html>
脚注
参考地址[1]: http://math.stackexchange.com/
阅读全文
0 0
- Tab键控制光标在指定范围内移动
- tab键控制元素跳转
- DBGrid中用光标键控制Cell
- 上下左右 键控制人移动
- 上下左右 键控制人移动
- VC按TAB键控制控件顺序
- wince 实现 上下键控制TAB
- <Unity3D>上下左右 键控制人移动
- JavaScript键盘上下键控制移动
- 鼠标左键控制玩家移动
- javascript在限定范围内移动
- 在EditText移动光标
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果
- 用回车键实现MFC对话框中TAB键控制输入焦点在控件中跳转的效果
- 在datagrid获得光标后,按tab键让其焦点移动到其他控件。
- java在指定范围内生成随机数
- Hive 使用RegexSerDe来处理标准格式Apache Web日志
- 字节码分析finally块对return返回值的影响
- 安卓之USB主机(Host)与配件(Accessory)模式
- android四大组件(详细总结)
- Qimonda公司简介
- Tab键控制光标在指定范围内移动
- 配置Hadoop集群
- python---re模块,正则表达式
- 华硕笔记本(GTX 1060显卡)安装Ubuntu16.04+Nvidia显卡驱动+Cuda8.0+cudnn6.0+ROS+Opencv3.2+Caffe+Tensorflow
- MSRA 电面
- PKI (Public Key Infrastructure 公共密钥基础设施)
- 对象池
- 线程相关的一些问题
- <ICA>Independent Component Analysis与fMRI