1

我有一个更新面板,其中包含一个 gridview 并在每行图像(删除图标)内删除该行。我正在尝试在常规 JavaScript 确认弹出窗口中给出答案。

$(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 设置为默认值,因为我没有在标记中设置它。

4

4 回答 4

1

ThiefMaster提供的答案对我有用,在:preventDefault() 不适用于我的案例的微小调整:

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');
}

pageLoad 事件在使用 updatepanel+scriptmanager 时可用,它允许我在每个部分回发时重新附加事件处理程序。

于 2012-10-09T16:48:27.630 回答
0

上次我工作时,我的情况是回发被完全阻止了。情况是我将回发控件放置在 div 标签中,并使用 .live 事件将此类点击事件应用于该 div 标签。这阻止了回发。因此,将图像控件放在 div 元素中并对那个 div 执行相同的操作。但我不确定如何允许回发。

于 2012-10-09T01:38:22.193 回答
0

在这种情况下,请尝试OnClientClick="return Delete()"在您的标记中声明并检查页面是否仍在回发..

function Delete(){

   return false;
}
于 2012-10-08T22:44:18.020 回答
0

onclick="__doPostBack('controlId','Delete$0')"无论您从$("img.delete").click()事件返回什么,看起来都有as an image 属性会导致页面回发。

您可以尝试__doPostBack从单击事件中调用该方法吗?这对我有用 - 我能够以这种方式控制回发。

展望未来,您可能必须Page.ClientScript.GetPostBackEventReference在 JavaScript 中使用和公开您的回发,以便您可以从事件处理程序中调用它们。

于 2012-10-09T01:05:25.620 回答