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 相关文章推荐
js实现的网站首页随机公告随机公告
Mar 14 Javascript
Firefox div高度自适应
Apr 28 Javascript
一些常用的JS功能函数代码
Jun 23 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
May 14 Javascript
从零学jquery之如何使用回调函数
May 16 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
浅谈JavaScript对象与继承
Jul 10 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
Vue表单demo v-model双向绑定问题
Jun 29 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
基于Three.js实现360度全景图片
Dec 30 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中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Django中使用Celery的方法示例
2018/11/29 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Django框架验证码用法实例分析
2019/05/10 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
敬老月活动总结
2014/08/28 职场文书
党员组织生活会发言材料
2014/10/17 职场文书