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 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
Javascript模块化编程(一)模块的写法最佳实践
Jan 17 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
jQuery实现复选框的全选和反选
Feb 02 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
Vue项目安装插件并保存
Jan 28 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网上调查系统
2006/10/09 PHP
上传多个文件的PHP脚本
2006/11/26 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php ci框架验证码实例分析
2013/06/26 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
用Python实现协同过滤的教程
2015/04/08 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
python多线程http压力测试脚本
2019/06/25 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
技术负责人任命书
2014/06/05 职场文书
尊师重教演讲稿
2014/09/04 职场文书
高一军训感想
2015/08/07 职场文书
各种货币符号快捷输入
2022/02/17 杂记
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL