代码背后
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 :(得分:1)
您的对话框有点async
,因为函数Confirmation
会立即返回。
因此,您无法返回用户是否会立即单击是或否。
我建议如下:
ASP runat="server"
按钮不可见(display:none;
)client side button
放到同一个地方Confirmation
yes
的回调,触发点击隐身ASP button
这可能是对回发发生时进行编程控制的最简单方法,而无需用户直接调用回发。
在选择Yes
时触发回发将如下所示:
buttons['Yes'] = function() {
$(this).dialog('close');
var result = $(source).attr('tag');
$('#<%=hidField.ClientID%>').val(result);
$('#<%=btnNext.ClientID%>').click();
};