2012-10-08 32 views
1

我得到了一個更新面板,其中包含一個gridview並在每行圖像(刪除圖標)內刪除該行。我試圖在給定的常規JavaScript確認彈出框中給出答案。根據JS確認框防止更新面板中的回發

$(function(){ 
    $("img.delete").on("click", function(evt){ 
     return false; //Does not work 
     /*or*/ 
     evt.preventDefault();//Does not work either 
    }); 
}); 

HTML格式呈現:

<td> 
     <img id="ctl00_ctl00_ctl00_ctl00_ctl00_ctl00_ContentPlaceHolderDefault_Content_Content_Content_Content_DashboardGrid_ctl02_DeleteControl140" class="delete" onclick="__doPostBack('ctl00$ctl00$ctl00$ctl00$ctl00$ctl00$ContentPlaceHolderDefault$Content$Content$Content$Content$DashboardGrid','Delete$0')" width="20" height="20" title="Remove item from your list." src="/images/delete_item.png" alt="Remove item from your list." style="border-width:0px;"> 
</td> 

它不工作,因爲回傳總是被有它的UpdateMode它在這個意義上默認的,我不是在設置它的更新面板進行標記。

+0

在點擊事件中放置一個警報,並檢查客戶端事件是否在第一個地方開火.. –

+0

是的,我曾嘗試過,看看我是否在正確的事件(標記爲該事件),它的工作原理,事情就像警報一樣簡單。當試圖阻止回發發生時它不起作用。 – radyz

+0

防止內聯'onclick =「...」'事件觸發非常困難。您需要將其轉換爲事件監聽器 - 請參閱我的答案:http://stackoverflow.com/a/10432386/298479 – ThiefMaster

回答

1

ThiefMaster提供的答案爲我工作,在:用小調整preventDefault() doesn't work我的情況:使用的UpdatePanel + ScriptManager的,它可以讓我重新連接的事件處理程序時

function pageLoad() 
{ 
    var inlineFunction = new Function($('img.delete').attr('onclick')); 
    $('img.delete').click(function(event){ 
    if(!confirm('Are you sure?')) { 
     event.stopImmediatePropagation();   
    } 
    }).click(inlineFunction).removeAttr('onclick'); 
} 

的頁面加載事件可每次部分回發。

0

在這種情況下,嘗試在你的標記聲明OnClientClick="return Delete()"並檢查頁面仍然回發..

function Delete(){ 

    return false; 
} 
+0

這是我的一個錯字,它已被編輯。 – radyz

+0

檢查編輯..... –

0

看起來具有onclick="__doPostBack('controlId','Delete$0')"作爲網頁發佈圖像屬性結果返回不管你從$("img.delete").click()事件返回什麼。

你可以嘗試從點擊事件中調用__doPostBack方法嗎?這對我有用 - 我能夠通過這種方式控制回發。未來,您可能不得不使用Page.ClientScript.GetPostBackEventReference並在JavaScript中公開您的回傳,以便您可以從事件處理程序調用它們。

0

上次我工作時,我的情況是回發被完全阻止。而這種情況是我將回發控件放置在div標籤中,並將這種點擊事件應用於具有.live事件的div標籤。這阻止了回傳。因此,將圖像控件放在div元素中,併爲該div執行相同的操作。但我不確定如何允許回發。

相關問題