2014-05-03 35 views
0

我有一個asp.net 4網站,我使用javascript的confirm()方法之前,用戶從數據庫中刪除一個對象作爲基於客戶端的確認。使用IE6-10,Firefox,Chrome和Safari可以很好地工作。我點擊取消,它會停止頁面加載。不過,我一直在使用IE11的用戶控件上遇到問題。確認()取消按鈕不再工作在IE11

usercontrol加載一個datagrid,它有一個鏈接按鈕,讓服務器調用刪除存儲過程。

使用IE11時,確認彈出窗口打開,但是如果我單擊取消按鈕或窗口上的x不會停止頁面發佈並在服務器中調用刪除命令。我嘗試了所有我能想到的事情,但它總是通過並將頁面視爲有效。

在的ItemDataBound我們有這個背後的代碼...

DeleteButton.CommandArgument = ac.ID.ToString(); //set the id so we know what to delete 
DeleteButton.Attributes.Add("onclick", "Sure(event)"); 

這個高度的JavaScript的圖像按鈕。

包含我們有以下代碼的JavaScript文件中

則...

function Sure(evt){ 
var ans = confirm("Are you sure you want to delete? \n\nPress OK to continue or Cancel to stop."); 
if(!ans){ 
    var e = (window.event)? window.event:evt; 
    e.returnValue = false; 
    return false; 
} 
} 

調試,它的值設置爲false,並將其送回當我按下取消按鈕,但是這ISN」像其他瀏覽器一樣停止回發。它直接調用數據庫來刪除它。

任何想法爲什麼IE11在確認被取消後不會停止回發?

+0

語句'var e =(window.event)? window.event:evt;'可以是'evt = evt || window.event;',然後使用* evt *後來insted * e *。 – RobG

回答

1

如果我聽到你說的對,你是不是指...?

"onclick", "return Sure(event)" 

...

function Sure(evt){ 
var ans = confirm("Are you sure you want to delete? \n\nPress OK to continue or Cancel to stop."); 
if(!ans){ 
    var e = (window.event)? window.event:evt; 
    e.returnValue = false; 
    return false; 
} else { 
return ans; 
} 
} 

從我的理解你的腳本不應該在任何地方工作,甚至IE11。如果您不「返回」函數的值,那麼您只是執行該函數並忽略確認對話框返回「false」的事實。