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实现放大镜效果
Sep 02 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
微信小程序 获取设备信息 API实例详解
Oct 02 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
vue使用vuex实现首页导航切换不同路由的方法
May 08 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
Jul 13 Javascript
jQuery实现弹出层效果
Dec 10 jQuery
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
Sep 04 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
mysql 字段类型说明
2007/04/27 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP 微信支付类 demo
2015/11/30 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
Python 实现集合Set的示例
2020/12/21 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物
超级搞笑检讨书
2014/01/15 职场文书
银行优秀员工事迹
2014/02/06 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android