zoukankan      html  css  js  c++  java
  • window.location.href跳转无效

     
     
    问题情况
    JS中设置window.location.href跳转无效
     
    原因是 a标签的href跳转会执行在window.location.href设置的跳转之前:
    如果是表单form的话  也会先执行form提交。
    提交之后 就已经不在当前页面了。所以 window.location.href无效。
     
    解决方法一
    在js函数中加上
    window.event.returnValue=false
    这个属性放到提交表单中的onclick事件中在这次点击事件不会提交表单,如果放到超链接中则在这次点击事件不执行超链接href属性。
    改成如下代码后window.location.href成功跳转:
    [html] view plain copy
    1. <script type="text/javascript">  
    2.    function checkUser()  
    3. {   
    4.      if(2!=1){  
    5.         window.location.href="login.jsp";    
    6.      window.event.returnValue=false;  
    7.      }  
    8. }  
    9.   </script>   
    10.   
    11. <div class="extra">  
    12.           <a class="ui blue right floated primary button" onclick="checkUser()"  href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime }">确认预订</a>  
    13.            </div>  
     
     
    解决方法二
    点击事件中  onclick="checkUser()"  变成 onclick="return checkUser();"
    并且在 checkUser中 return  false;这样的话 a标签的href也不会执行。 这样就能window.location.href顺利跳转。
    代码如下:
    [html] view plain copy
    1.  <script type="text/javascript">  
    2.     
    3.    function checkUser()  
    4. {   
    5.      if(<%=flag%>!=1){  
    6.         window.location.href="login.jsp";  
    7.      return false;  
    8.      }  
    9. }  
    10.   </script>  
    11.   
    12.  <div class="extra">  
    13.           <a class="ui blue right floated primary button" onclick="return checkUser();"    
    14.   
    15. href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime   
    16.   
    17. }">确认预订</a>  
    18.            </div>  
     
     
     
    解决方法三
    感谢qmm0523 在评论中提出这种解法
    如果是form体提交的话还可以把summit改成button调用js提交,这样window.location.href也会在js提交summit之前执行成功跳转。
    如下:
    [html] view plain copy
    1. function checkUser()  
    2. {   
    3.      if(<%=flag%>!=1){  
    4.         window.location.href="login.jsp";  
    5.      return false;  
    6.      }  
    7.  document.getElementById("form").submit();  
    8. }  
    9.   
    10.   
    11.     <form action="addRoom" method="post"   name="from" id="form">  
    12.             <table align="center" border="1" class="commTable">  
    13.                 <tr>  
    14.                     <td class="right"><span  
    15.                         style="font-weight: blod;">房号:</span></td>  
    16.                     <td><input type="text" name="roomNum" size="25"  
    17.                         id="roomNum" /></td>  
    18.                 </tr>  
    19.                 <tr>  
    20.                     <td colspan="2" align="center"><button   value="添加"  
    21.                         onclick="checkUser()" /></td>  
    22.                 </tr>  
    23.             </table>  
    24.         </form>  

    声明:本文为转载,再次十分百分千分万分感谢博主的分享,谢谢。

  • 相关阅读:
    关于 a 标签 jquery的trigger("click"),无法触发问题。
    浏览器上传文件,存到oracle数据库示例。
    关于java的Long 类型到js丢失精度的问题
    java 自定义注解,并使用示例
    关于重置功能(type="reset")的相关问题
    校验键盘上中英文状态下所有的特殊字符(排除下划线所在的按键)
    VS Code 设置取消打开文件目录的自动定位跟踪功能。
    $.extend(x,y); 函数用法介绍。
    用jquery的.val() 给具有style="display:none;" 属性的标签写值的问题。
    10.我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
  • 原文地址:https://www.cnblogs.com/ztf20/p/10635231.html
Copyright © 2011-2022 走看看