关于在jsp中,<a>标签在confirm为false之后,还能继续跳转的问题.

首先贴上代码:

<a href="Delete_Servlet?de_name=<%=book.getName()%>" οnclick="confirm('确定删除么?')">

这个是修改之前的代码,看起来好像没问题,前面是超链接,后面为判断.但是在测试的时候,发现,在跳出的对话框中选[否],还是会进行跳转,并进行相应的操作.我百思不得其解.


在网上搜过好多之后,才慢慢懂得了一点.先说一下出现这个问题的原因:

两者的执行顺序是先判断onClick,再执行href的跳转,但是在两者都定义了的时候,在href中定义的函数如果有返回值的话,当前页面的内容将被返回值代替.所以就会出现上述的问题.

解决方法:

在此处,我的代码中href的功能除了要实现跳转到新的servlet中,还要把jsp中的数据传到响应的servlet中,通过网上的方法,我自己变通了一下:

具体说来就是将点击之后是否跳转的判断,放到onclick的方法中,将要带走的值定义为<a>标签的name属性,就可以通过参数的形式拿走了.

首先先引入存放数据的Book实体类

Book book = new Book();
这是修改之后的<a>标签

<a name = "<%=book.getName()%>"  οnclick="fun_cofm(this)">删除</a>

我加了一个name属性,用来存放从Book中拿到的数据
下面是方法:

<script>
		/* 声明onclick所执行的方法, */
		function fun_cofm(obj){
			var a = confirm("确定要删除吗?");
			if(a == false){
				return;
			}else{
				/* 当[确定]时,才调用href,就杜绝了之前的问题. */
				/* 调用<a>标签中的name属性,就可以拿到Book实体类中的值,从而传递到servlet业务层 */
			 	obj.href="Delete_Servlet?de_name="+obj.name;
			 	
			}
		}
	</script>



最后测试通过!


有一个小问题就是:

当点击[删除]的时候,鼠标不会再变成[手],所以需要再简单设置一下:

<style type="text/css">
		#aa{
			cursor:pointer;
		}
	</style>
<a id = "aa" name = "<%=book.getName() %>"  οnclick="fun_cofm(this)" >删除</a>



以上!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值