javascript 中设置window.location.href跳转无效问题解决办法


Posted in Javascript onFebruary 09, 2017

javascript 中设置window.location.href跳转无效问题解决办法

问题情况

JS中设置window.location.href跳转无效

代码如下:

<script type="text/javascript"> 
  function checkUser() 
{  
   if(2!=1){ 
    window.location.href="login.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;  
   } 
} 
 </script>  
 
<div class="extra"> 
     <a class="ui blue right floated primary button" onclick="checkUser()" href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime }" rel="external nofollow" rel="external nofollow" >确认预订</a> 
      </div>

原因是 a标签的href跳转会执行在window.location.href设置的跳转之前:

如果是表单form的话  也会先执行form提交。

提交之后 就已经不在当前页面了。所以 window.location.href无效。

解决方法一

在js函数中加上

window.event.returnValue=false

这个属性放到提交表单中的onclick事件中在这次点击事件不会提交表单,如果放到超链接中则在这次点击事件不执行超链接href属性。

改成如下代码后window.location.href成功跳转:

<script type="text/javascript"> 
  function checkUser() 
{  
   if(2!=1){ 
    window.location.href="login.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ;  
   window.event.returnValue=false; 
   } 
} 
 </script>  
 
<div class="extra"> 
     <a class="ui blue right floated primary button" onclick="checkUser()" href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime }" rel="external nofollow" rel="external nofollow" >确认预订</a> 
      </div>

解决方法二

点击事件中  onclick="checkUser()"  变成 onclick="return checkUser();"

并且在 checkUser中 return  false;这样的话 a标签的href也不会执行。 这样就能window.location.href顺利跳转。

代码如下:

<script type="text/javascript"> 
  
  function checkUser() 
{  
   if(<%=flag%>!=1){ 
    window.location.href="login.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ; 
   return false; 
   } 
} 
 </script> 
 
 <div class="extra"> 
     <a class="ui blue right floated primary button" onclick="return checkUser();"  
 
href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime  
 
}">确认预订</a> 
      </div>

解决方法三

如果是form体提交的话还可以把summit改成button调用js提交,这样window.location.href也会在js提交summit之前执行成功跳转。

如下:

function checkUser() 
{  
   if(<%=flag%>!=1){ 
    window.location.href="login.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ; 
   return false; 
   } 
 document.getElementById("form").submit(); 
} 
 
 
  <form action="addRoom" method="post"  name="from" id="form"> 
      <table align="center" border="1" class="commTable"> 
        <tr> 
          <td class="right"><span 
            style="font-weight: blod;">房号:</span></td> 
          <td><input type="text" name="roomNum" size="25" 
            id="roomNum" /></td> 
        </tr> 
        <tr> 
          <td colspan="2" align="center"><button  value="添加" 
            onclick="checkUser()" /></td> 
        </tr> 
      </table> 
    </form>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript 命名空间以提高代码重用性
Nov 13 Javascript
一起来写段JS drag拖动代码
Dec 09 Javascript
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
javascript和jquery修改a标签的href属性
Dec 16 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
使用原生javascript开发计算器实例代码
Feb 21 Javascript
微信小程序之picker日期和时间选择器
Feb 09 #Javascript
BootStrap 弹出层代码
Feb 09 #Javascript
jQuery插件form-validation-engine正则表达式操作示例
Feb 09 #Javascript
javascript history对象详解
Feb 09 #Javascript
jquery dialog获取焦点的方法
Feb 09 #Javascript
jQuery实现淡入淡出的模态框
Feb 09 #Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 #Javascript
You might like
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php 抽象类的简单应用
2011/09/06 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
python测试驱动开发实例
2014/10/08 Python
详解Python中where()函数的用法
2018/03/27 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
HTML5标签使用方法详解
2015/11/27 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
应届毕业生应聘自荐信
2013/12/07 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
投标邀请书范文
2014/01/31 职场文书
员工工作表现评语
2014/04/26 职场文书
团队精神口号
2014/06/06 职场文书
2015年科协工作总结
2015/05/19 职场文书
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js