阻止按下backspace键造成页面回退相像
在IE浏览器中,会出现当你使用鼠标选中input标签或者是textarea标签,或者啥也没选中的时候,按下backspace键会触发浏览器的回退。
以下是代码实现,分为JS和jQuery两种,针对浏览器的适配,推荐使用jQuery版
1. JavaScript版:
/*
JS版
作用:阻止按下backspace键造成页面回退相像
*/
window.onload=function(){
document.getElementsByTagName("body")[0].onkeydown =function(){
/*获取事件对象
* event.relatedTarget IE不支持,fireFox不支持
* event.srcElement IE支持,fireFox不支持
* event.target IE,fireFox都支持
* event.currentTarget IE和fireFox都支持
*/
/*var elem = event.currentTarget || event.relatedTarget || event.target || event.target;*/ if(event.keyCode==8){//判断按键为backSpace键 //获取事件
var elem = event.srcElement || event.currentTarget;
//判断是否需要阻止按下键盘的事件默认传递
var name = elem.nodeName;
// 如果name不为INPUT或者是TEXTAREA任意一个,就阻止该动作
if(name!='INPUT' && name!='TEXTAREA'){
return stopIt(event);
}
// 获取该元素的type属性值
var type_e = elem.type.toUpperCase();
// 如果type属性不是text,textarea,password.file中的任意一个,则阻止该backspace操作
if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){
return stopIt(event);
}
// 如果是个input,并且type也满足要求,继续判断是否是readonly或者是disabled不可编辑的文本框
// 如果是,则阻止该backspace操作
if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){
return stopIt(event);
}
}
}
}
function stopIt(e){
// 如果设置了该属性,它的值比事件句柄的返回值优先级高。
// 把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
if(e.returnValue){
e.returnValue = false ;
}
// 通知浏览器不要执行与该事件相关联的默认动作
if(e.preventDefault ){
e.preventDefault();
}
// 阻止浏览器执行相关动作
return false;
}
2. jQuery版:
/*
jQuery版
*/
$(function(){
$("body").keydown(function(e){
// 获取当前按键的Code
var keyCode = e.which;
// 当keyCode值为8是,为backspace按键被触发
if(keyCode == 8){
// 获取按下backspace键时光标指向的元素
var elem = document.activeElement.tagName;
//判断elem是否为input或者是textarea
if(elem != "INPUT" && elem != "TEXTAREA"){
// 阻止该操作
return stopIt(e);
}
// 如果elem为input或者是textarea,则判断type类型是否为text,textarea,password,file
var elemType = document.activeElement.type; if(elemType != "text" && elemType != "textarea" && elemType!= "password" && elemType != "file"){
return stopIt(e);
}
// 如果满足上述条件了,继续判断是否为readonly或者是disabled
//var dis = document.activeElement.getAttribute("disabled"); // 返回值为null或disabled
//var read = document.activeElement.getAttribute("readonly"); // 返回值为null或readonly //var dis = document.activeElement.disabled; //返回值为false或true
//var read = document.activeElement.readOnly; // 返回值为false或true if(document.activeElement.disabled || document.activeElement.readOnly){
return stopIt(e);
}
}
});
});
function stopIt (e) {
// 如果设置了该属性,它的值比事件句柄的返回值优先级高。
// 把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
if(e.returnValue){
e.returnValue = false ;
}
// 通知浏览器不要执行与该事件相关联的默认动作
if(e.preventDefault ){
e.preventDefault();
}
// 阻止浏览器执行相关动作
return false;
}
阻止按下backspace键造成页面回退相像的更多相关文章
- 本地安装apk后直接打开,按下Home键再重新打开,然后按下返回键时页面展示错误的处理方法
情景: 1.下载apk到手机本地,点击本地apk开始安装 2.安装完成后,一般会有 “完成” 和 “打开” 两个按钮,点击 “完成” 按钮时是没有问题的,不管它 3.点击 “打开” 按钮,进入到首页( ...
- 【JS】【1】JavaScript屏蔽Backspace键(避免点击后页面产生回退)
前言: 1,参考资料:JavaScript屏蔽Backspace键 - 孤傲苍狼 - 博客园(http://www.cnblogs.com/xdp-gacl/p/3785806.html) 2,参考的 ...
- 前端魔法堂:屏蔽Backspace导致页面回退
前言 前几天用户反映在录入资料时一不小心错按Backspace键,就会直接回退到是一个页面,导致之前辛辛苦苦录入的资料全部丢失了.哦?居然还有这种情况.下面我们来一起探讨一下吧! Windows系统 ...
- js禁止Backspace键使浏览器后退
在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想.于是集众人之智,采众家之长,归纳如下: 这里主要参考博客http://q821424508.iteye.com/ ...
- JavaScript屏蔽Backspace键
原文:http://www.cnblogs.com/xdp-gacl/p/3785806.html 今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本 ...
- JavaScript学习总结(二十二)——JavaScript屏蔽Backspace键
今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly=&qu ...
- vi 方向键和Backspace键失效问题的解决方法
安装的ubuntu默认的编辑器是vi,遇到了两个问题: ① insert模式下,按方向键将产生A.B.C.D等字符,解决方案: :set nocompatible ② insert模式下Backspa ...
- 前端javascript如何阻止按下退格键页面回退 但 不阻止文本框使用退格键删除文本
这段代码可以: document.onkeydown = function (e) { e.stopPropagation(); // 阻止事件冒泡传递 e.preventDefault(); // ...
- 在IE下,如果在readonly的input里面键入backspace键,会触发history.back()
在IE下,如果在readonly的input里面键入backspace键,会触发history.back(), 用以下jQuery代码修正之 $("input[readOnly]" ...
随机推荐
- 【Hadoop系列】linux SSH原理解析
本文中斜体加粗代表shell指令,操作环境 CentOS6.5 linux root免密码登录链接:[Hadoop系列]linux下 root用户免密码登录远程主机 ssh. linux 非root用 ...
- java导入excle表格,并且对表格进行相应的修改,并对表格数据进行整理,最后导出本地表格等一系列操作
1.首先创建一个java项目 完成效果如下图所示 2.导入以下jar包 3.代码如下 其中行和列的操作是根据需求自动划分的 public class auto_date { private stati ...
- hdu 1011 Starship Troopers 经典的树形DP ****
Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- java设计模式之抽象工厂模式学习
工厂模式有个问题就是,类的创建依赖工厂.要想增加一个工厂类,就要修改原来的代码,这违背了闭包原则.所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的 ...
- csharp:DropDownComboxTreeView
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using Syste ...
- java.io.FileNotFoundException
1. 概述 上传图片到 o:/mmfiles_2017/39973/25444/333.jpg目录下 目录不存在会报标题中的错误 必须先创建目录 2. 方法 File filePath = new F ...
- CSS清浮动方法总结
浮动----会使当前标签产生上浮效果,从而导致父标签高度塌陷的问题 1. 给父元素指定高度 <div style="height:200px"> <div sty ...
- eclipse 内存溢出
2011年02月22日 星期二 11:14 eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M ec ...
- The Willpower Instinct(自控力,意志力)
下面是我这几天在读斯坦福大学麦格尼格尔教授的<自控力>这本书的过程中摘抄的部分经典句子,发人深思!有助于帮助我们更好的了解自己. 00 导言:欢迎进入意志力入门 意志力:控制自己的注意力. ...
- M-AddTwoNumbers-未完成
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...