1. 程式人生 > >關於在jsp中,標籤在confirm為false之後,還能繼續跳轉的問題.

關於在jsp中,標籤在confirm為false之後,還能繼續跳轉的問題.

首先貼上程式碼:

<a href="Delete_Servlet?de_name=<%=book.getName()%>" onclick="confirm('確定刪除麼?')">

這個是修改之前的程式碼,看起來好像沒問題,前面是超連結,後面為判斷.但是在測試的時候,發現,在跳出的對話方塊中選[否],還是會進行跳轉,並進行相應的操作.我百思不得其解.

在網上搜過好多之後,才慢慢懂得了一點.先說一下出現這個問題的原因:

兩者的執行順序是先判斷onClick,再執行href的跳轉,但是在兩者都定義了的時候,在href中定義的函式如果有返回值的話,當前頁面的內容將被返回值代替.所以就會出現上述的問題.

解決方法:

在此處,我的程式碼中href的功能除了要實現跳轉到新的servlet中,還要把jsp中的資料傳到響應的servlet中,通過網上的方法,我自己變通了一下:

具體說來就是將點選之後是否跳轉的判斷,放到onclick的方法中,將要帶走的值定義為<a>標籤的name屬性,就可以通過引數的形式拿走了.

首先先引入存放資料的Book實體類

Book book = new Book();
這是修改之後的<a>標籤
<a name = "<%=book.getName()%>"  onclick="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() %>"  onclick="fun_cofm(this)" >刪除</a>



以上!