当用户点击ASP.Net按钮时,我正在尝试显示模式对话框。这是我的页面:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script src="js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.6.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 300,
modal: true,
buttons: {
'Ok': function() {
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
},
close: function() {
;
}
});
});
function ShowDialog() {
$('#dialog').dialog('open');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="TreeNew" runat="server" Text="New" OnClientClick="ShowDialog();"/>
<asp:Label ID="Message" runat="server"></asp:Label>
<div id="dialog" title="Select content type">
<p id="validateTips">All form fields are required.</p>
<asp:RadioButtonList ID="ContentTypeList" runat="server">
<asp:ListItem Value="1">Text</asp:ListItem>
<asp:ListItem Value="2">Image</asp:ListItem>
<asp:ListItem Value="3">Audio</asp:ListItem>
<asp:ListItem Value="4">Video</asp:ListItem>
</asp:RadioButtonList>
</div>
</div>
</form>
</body>
</html>
当我点击TreeNew按钮时出现模态弹出窗口但是页面会立即回发。
发生了什么事?
答案 0 :(得分:3)
尝试
OnClientClick="return ShowDialog();"
和
function ShowDialog() {
$('#dialog').dialog('open');
return false;
}
这会阻止回发。
答案 1 :(得分:3)
虽然添加return false;
会解决您的问题(正如其他答案所示),但我认为您最好的办法是使用标准的HTML按钮。在这种情况下没有理由使用ASP.NET控件,因为您不打算回发。
但是,如果您坚持使用ASP.NET按钮,请至少设置UseSubmitBehavior="False"
,以便按钮呈现为<input type="button"/>
而不是<input type="submit"/>
。
答案 2 :(得分:2)
OnClientClick 需要返回false ,如下所示:
OnClientClick="ShowDialog(); return false;"
按钮默认回发但返回false会阻止默认行为
答案 3 :(得分:1)
您没有从OnClientClick返回false。如果没有显式返回false,则假定在这种情况下为“true”。 OnClientClick的返回值为true表示可以进行回发。尝试将OnClientClick更改为以下内容(在调用ShowDialog()后添加“return false”)
OnClientClick="ShowDialog();return false;"
答案 4 :(得分:1)
这篇文章可能对您有所帮助:using-jquery-modal-dialog-confirmation-with-an-asp-net-server-control。
希望这会有所帮助。
答案 5 :(得分:0)
使用preventDefault()jQuery函数来阻止按钮回发
试试这个:
function ShowDialog(evt) {
evt.preventDefault();
$('#dialog').dialog('open');
}