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 相关文章推荐
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
你应该知道的几类npm依赖包管理详解
Oct 06 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
vue.js响应式原理解析与实现
Jun 22 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 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 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
JS 建立对象的方法
2007/04/21 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
Js组件的一些写法
2010/09/10 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
实例浅析js的this
2016/12/11 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
python list使用示例 list中找连续的数字
2014/01/27 Python
Python定时执行之Timer用法示例
2015/05/27 Python
python模块之paramiko实例代码
2018/01/31 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
生物技术研究生自荐信
2013/11/12 职场文书
计划生育宣传标语
2014/06/21 职场文书
超市创业计划书
2014/09/15 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
师德师风剖析材料
2014/09/30 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
领导视察通讯稿
2015/07/18 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python