[JavaScript] 按钮点击事件失效

版权声明:本文为CSDN博主「张小凡vip」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzq900503/article/details/50879278

问题情况
JS中设置window.location.href跳转无效

代码如下:

 <script type="text/javascript">
   function checkUser()
	{ 
    	 if(2!=1){
     		window.location.href="login.jsp";  
     	}
	}
  </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>

原因是 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";  
	     	window.event.returnValue=false;
	     }
	}
</script> 

解决方法二
点击事件中 οnclick=“checkUser()” 变成 οnclick=“return checkUser();”

并且在 checkUser中 return false;这样的话 a标签的href也不会执行。 这样就能window.location.href顺利跳转。

代码如下:

 <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>

解决方法三
感谢qmm0523 在评论中提出这种解法

如果是form体提交的话还可以把summit改成button调用js提交,这样window.location.href也会在js提交summit之前执行成功跳转。

如下:

function checkUser()
{ 
     if(<%=flag%>!=1){
     	window.location.href="login.jsp";
     	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="添加"
					οnclick="checkUser()" /></td>
			</tr>
		</table>
	</form>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值