0

コードビハインド

btnNext.Attributes.Add("onclick", " return Confirmation(this,'" +  GetLocalResourceObject("msg").ToString() + "'); ")

.ASPX ページ [javascript タグ内]

function Confirmation(source, msg) {
    var dialog = '<div class="dialog confirm">' + msg + '</div>';
    var buttons = {};
    buttons['Yes'] = function() {
        $(this).dialog('close');
        var result = $(source).attr('tag');
        $('#<%=hidField.ClientID%>').val(result);
    };
    buttons['No'] = function() {
        $(this).dialog('close');
    };

    $(dialog).dialog({
        autoOpen: true,
        resizable: false,
        draggable: true,
        closeOnEscape: true,
        width: 'auto',
        buttons: buttons,
        title: 'Are you sure?',
        modal: true,
    });
}

ボタンをクリックするとダイアログが開きますが、ユーザー入力がなくてもポストバックが発生します。[ダイアログ ボックスで [はい/いいえ] をクリックします]。

ユーザーがダイアログ ボックスで [はい] または [いいえ] をクリックするまで、ポスト バックが発生しないようにする方法。[IE9]

4

1 に答える 1

1

async関数Confirmationがすぐに戻るので、ダイアログは一種のものです。そのため、ユーザーがすぐに「はい」をクリックするか「いいえ」をクリックするかを返すことはできません。

次のことをお勧めします。

  1. ASP runat="server"ボタンを非表示にする( display:none;)
  2. 新しいものclient side buttonを同じ場所に置く
  3. クライアント側のボタンをクリックすると、呼び出しますConfirmation
  4. ダイアログでの選択のコールバックとしてyes、非表示へのクリックをトリガーしますASP button

これはおそらく、ユーザーがポストバックを直接呼び出すことができずに、ポストバックが発生するタイミングをプログラムで制御する最も簡単な方法です。

選択時にポストバックをトリガーすると、次のYesようになります。

buttons['Yes'] = function() {
    $(this).dialog('close');
    var result = $(source).attr('tag');
    $('#<%=hidField.ClientID%>').val(result);
    $('#<%=btnNext.ClientID%>').click();
};
于 2013-08-07T06:00:13.517 に答える