本文转自:https://blog.csdn.net/qq_37837134/article/details/79242148
在a标签中使用location.href无效
原因:a标签中先执行href,然后才是location.href此时已经跳转到了新的页面,所以location.href无效
在form表单中也是一样,会先执行form提交再location.href,所以也会无效
解决办法一:在a标签中将href中的内容用#,使用空也是会跳转的<a href=" #"></a>
解决办法二:
在js函数中加上
window.event.returnValue=false
这个属性放到提交表单中的onclick事件中在这次点击事件不会提交表单,如果放到超链接中则在这次点击事件不执行超链接href属性。
改成如下代码后window.location.href成功跳转:
[html] view plain copy
- <script type="text/javascript">
- function checkUser()
- {
- if(2!=1){
- window.location.href="login.jsp";
- window.event.returnValue=false;
- }
- }
- </script>
- <div class="extra">
- <a class="ui blue right floated primary button" οnclick="checkUser()" href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime }">确认预订</a>
- </div>
解决办法三:
点击事件中 οnclick="checkUser()" 变成 οnclick="return checkUser();"
并且在 checkUser中 return false;这样的话 a标签的href也不会执行。 这样就能window.location.href顺利跳转。
代码如下:
[html] view plain copy
- <script type="text/javascript">
- function checkUser()
- {
- if(<%=flag%>!=1){
- window.location.href="login.jsp";
- return false;
- }
- }
- </script>
- <div class="extra">
- <a class="ui blue right floated primary button" οnclick="return checkUser();"
- href="bookConfirm?userId=${account.id}&roomNum=${room.roomNum}&stime=${stime }&etime=${etime
- }">确认预订</a>
- </div>