1

グリッドビューと各行の画像(削除アイコン)を含む更新パネルを取得して、その行を削除しました。通常の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

その場合は、マークアップでを宣言してOnClientClick="return Delete()"、ページがまだ投稿されているかどうかを確認してください。

function Delete(){

   return false;
}
于 2012-10-08T22:44:18.020 に答える
0

as image属性を使用すると、イベントonclick="__doPostBack('controlId','Delete$0')"から何を返すかに関係なく、ページがポストバックされるように見えます。$("img.delete").click()

__doPostBackクリックイベントからメソッドを呼び出してみてください。これは私にとってはうまくいきました-私はこの方法でポストバックを制御することができました。

今後はPage.ClientScript.GetPostBackEventReference、ポストバックをJavaScriptで使用して公開し、イベントハンドラーからポストバックを呼び出せるようにする必要があります。

于 2012-10-09T01:05:25.620 に答える
0

前回私のシナリオで作業していたのは、ポストバックが完全にブロックされていたということでした。そして、私がポストバックコントロールをdivタグに配置し、そのようなクリックイベントを.liveイベントでそのdivタグに適用していた場合がありました。そしてそれはポストバックをブロックしていました。したがって、画像コントロールをdiv要素に配置し、そのdivに対して同じことを行います。しかし、そのときのポストバックを許可する方法がわかりません。

于 2012-10-09T01:38:22.193 に答える