javascript阻止浏览器后退事件防止误操作清空表单

 更新时间:2013年11月22日 17:14:19   作者:  
由于误操作比较多,有时没有选中文本框,然后不小心按了退格之后,刚刚辛苦填好的表单就什么也后退的没有了,针对这个问题,本文给出了详细的解决方法,需要朋友不要错过
由于客户大多数是不懂电脑的大菜鸟。所以误操作比较多,有时没有选中文本框,然后不小心按了退格之后,刚刚辛苦填好的表单就什么也后退的没有了。网上查了好多资料,然后整合了一下。分享给大家。也希望酸奶姐姐来看看我的第一篇技术博客。呵呵(别介意我提到了你哦。)。废话不多说。上源码。
复制代码 代码如下:

$(function(){
//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
function banBackSpace(e){
var ev = e || window.event;//获取event对象
var obj = ev.target || ev.srcElement;//获取事件源

var t = obj.type || obj.getAttribute('type');//获取事件源类型

//获取作为判断条件的事件类型
var vReadOnly = obj.getAttribute('readonly');
var vEnabled = obj.getAttribute('enabled');
//处理null值情况
vReadOnly = (vReadOnly == null) ? false : true;
vEnabled = (vEnabled == null) ? true : vEnabled;

//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//并且readonly属性为true或enabled属性为false的,则退格键失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& (vReadOnly || vEnabled!=true))?true:false;

//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
?true:false;

//判断
if(flag2){
return false;
}
if(flag1){
return false;
}
}

//禁止后退键 作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止后退键 作用于IE、Chrome
document.onkeydown=banBackSpace;
window.history.forward(1);//屏蔽浏览器自带的后退键
})

需要注意的地方是:

这段代码一定要放到初始化方法中。然后用document.onkeypress=banBackSpace去调用自己写的方法。
复制代码 代码如下:

vReadOnly = (vReadOnly == null) ? false : true;对于这段代码,原来冒号后面是vReadOnly<span style="font-family: Arial, Helvetica, sans-serif;">这个值,后来发现在我项目中它返回空,不是null于是改成了true。</span>

按照上面方法即可实现在非text,password,textare时按退格阻止浏览器后退事件,但是不会阻止在文本框有值时的退格事件。这是我的第一篇博客,希望各位多多捧场。

相关文章

  • JS使用new操作符创建对象的方法分析

    JS使用new操作符创建对象的方法分析

    这篇文章主要介绍了JS使用new操作符创建对象的方法,结合实例形式分析了javascript面向对象程序设计类的定义、new操作符对象的创建及相关操作注意事项,需要的朋友可以参考下
    2019-05-05
  • js中的bigint类型转化为json字符串时报无法序列化的问题

    js中的bigint类型转化为json字符串时报无法序列化的问题

    JSON序列化指将JSON对象转换为JSON字符串,J实现方式有两种:一种是调用JSON对象内置的stringify()函数,一种是为对象自定义toJSON()函数,本文重点介绍js中的bigint类型转化为json字符串时报无法序列化的问题,感兴趣的朋友一起看看吧
    2024-01-01
  • Layui组件Table绑定行点击事件和获取行数据的方法

    Layui组件Table绑定行点击事件和获取行数据的方法

    今天小编就为大家分享一篇Layui组件Table绑定行点击事件和获取行数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • js实现横向伸展开的二级导航菜单代码

    js实现横向伸展开的二级导航菜单代码

    这篇文章主要介绍了js实现横向伸展开的二级导航菜单代码,涉及javascript鼠标事件及页面元素遍历的相关技巧,需要的朋友可以参考下
    2015-08-08
  • 基于jquery插件实现常见的幻灯片效果

    基于jquery插件实现常见的幻灯片效果

    使用幻灯片效果的网站目前很普遍,本以为很复杂,实现起来却发现很简单,现成的jquery插件jquery.KinSlideshow.js便可实现幻灯片效果
    2013-11-11
  • Bootstrap每天必学之标签与徽章

    Bootstrap每天必学之标签与徽章

    Bootstrap每天必学之标签与徽章,对Bootstrap标签与徽章小编也了解的很少,希望通过这篇文章和大家更多的去学习Bootstrap标签与徽章,从中得到收获。
    2015-11-11
  • 让js弹出窗口居前显示的实现方法

    让js弹出窗口居前显示的实现方法

    一般来说,显示在最前面的窗口都是因为窗口被激活获得焦点,要使窗口永远显示在最前面,可以人为的设置窗口在blur时立刻focus,或者用模式、无模式对话框实现
    2013-07-07
  • 微信小程序实现滚动加载更多的代码

    微信小程序实现滚动加载更多的代码

    这篇文章通过实例代码给大家介绍了微信小程序实现滚动加载更多,给大家提供了完整代码,需要的朋友可以参考下
    2019-12-12
  • JavaScript中消除闭包的一般方法介绍

    JavaScript中消除闭包的一般方法介绍

    这篇文章主要介绍了JavaScript中消除闭包的一般方法介绍,本文直接给出了操作示例,需要的朋友可以参考下
    2015-03-03
  • JavaScript登录验证码的实现

    JavaScript登录验证码的实现

    验证码功能真的无处不在,为了提高网站的安全性,验证码功能是必要的环节,今天小编通过本文给大家分享js登录验证码的实现,感兴趣的朋友跟着小编一起学习吧
    2016-10-10

最新评论