要想textarea有撤销功能这个还真不好做,特别是以前的js来实现,今天我们利用jquery就可以快速实现了Ctrl+Z 撤销功能哦。有需要的朋友可以参考一下。
核心代码就这么一点点
代码如下 | 复制代码 |
var log = []; $(function () { var txt = window.setInterval(function () { if (log[log.length - 1] != $("#t").val()) { log[log.length] = $("#t").val(); } }, 1500); var isCtrl = false; $(document).keydown(function (e) { if (e.which === 17) isCtrl = true; if (e.which === 90 && isCtrl === true) { log.pop(); $("#t").val(log[log.length - 1]).blur(); } }).keyup(function (e) { if (e.which === 17) isCtrl = false; }); }); |
完整的实例
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="http://z3f.me/js/jquery-1.6.2.min.js" type="text/javascript"></script> <script type="text/javascript"> var log = []; $(function () { var txt = window.setInterval(function () { if (log[log.length - 1] != $("#t").val()) { log[log.length] = $("#t").val(); } }, 1500); var isCtrl = false; $(document).keydown(function (e) { if (e.which === 17) isCtrl = true; if (e.which === 90 && isCtrl === true) { log.pop(); $("#t").val(log[log.length - 1]).blur(); $("#s").val(log[log.length - 1]).blur(); } }).keyup(function (e) { if (e.which === 17) isCtrl = false; }); }); function show() { $("#s").val(""); for (var i = 0; i < log.length; i++) { $("#s").val(log[i]+"rn[" + i + "]rn-----------------------rn"+$("#s").val()); } } </script> </head> <body> <textarea id="t" style="width:400px; height:300px;"> </textarea> <button onclick="show()">显示历史记录</button> <textarea id="s" style="width:400px; height:300px;"> </textarea> <hr /> 按Ctrl+Z一步一步撤销 <hr /> 交流请加QQ 10590916 </body> </html> |