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使用查询手册
Mar 07 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
Jquery下attr和removeAttr的使用方法
Dec 28 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
javascript实现dom元素可拖动
Mar 21 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
May 09 Javascript
JS留言功能的简单实现案例(推荐)
Jun 23 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
Aug 07 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 文件缓存的性能测试
2010/04/25 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
JS实现页面侧边栏效果探究
2021/01/08 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
Python 第一步 hello world
2009/09/25 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
python安装requests库的实例代码
2019/06/25 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
flask实现验证码并验证功能
2019/12/05 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
优秀团员自我评价
2015/03/10 职场文书