0

代碼隱藏IE9確認對話框不是等待用戶輸入,回發發生,而無需用戶輸入

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]

+0

沒有什麼東西是不會在你展示的代碼回發...這裏是如何形成的? – sergioadh

回答

1

由於函數Confirmation立即返回,您的對話框類型爲async。 因此,您無法返回用戶是否立即點擊「是」或「否」。

我建議如下:

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