關於在jsp中,標籤在confirm為false之後,還能繼續跳轉的問題.
阿新 • • 發佈:2019-01-30
首先貼上程式碼:
<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>
以上!