我是jquery的新手,请帮我解决以下问题。
我有一个模态弹出窗口,在弹出窗口中我有两个asp按钮(搜索并关闭)。单击搜索按钮我要执行验证然后激活服务器按钮单击事件,然后单击关闭按钮我要关闭对话框。
面临的问题: 1.点击搜索jquery验证正在发生,但服务器端事件没有被触发。 2.单击“关闭”,对话框仅在第一次关闭,但在单击搜索按钮一次后,关闭的JQUERY不会被触发。
以下是代码:
按钮打开对话框
<asp:Button ID="btnOpenDialog" runat="server" Text="Change"/>
jquery打开对话框
$("[id*=btnOpenDialog]").live("click", function () {
$("#modal_dialog").dialog({
title: "Details",
modal: true,
width: "700px"
});
return false;
})
带有asp按钮的对话框
<div id="modal_dialog" style="display:none">
<asp:Label ID="lblError" runat="server" Visible="true" ForeColor="Red"></asp:Label>
<asp:Label ID="lblLastName" runat="server" Text="Last Name"></asp:Label>
<asp:TextBox ID="txtLastName" Width="100px" runat="server"></asp:TextBox>
<asp:Label ID="lblFirstName" runat="server" Text="First Name"> </asp:Label>
<asp:TextBox ID="txtFirstName" Width="100px" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" UseSubmitBehavior="false" runat="server" Text="Search" OnClick="btnSearch_Click"/>
<asp:Button ID ="btnClose" Text="Close" runat="server"></asp:Button>
</div>
btnSearch JQUERY
$("[id*=btnSearch]").live("click", function (e) {
//e.preventDefault();
var firstName = $("#<%= txtFirstName.ClientID %>").val();
var lastName = $("#<%= txtLastName.ClientID %>").val();
if(firstName == "" & lastName == "")
{
$("#<%= lblError.ClientID %>").text("Enter minimum two characters in either first name or last name");
return false;
}
else
{
$("#<%= lblError.ClientID %>").text("");
$("#hdnFirstNameInitiator").val($("#<%= txtFirstName.ClientID %>").val());
$("#hdnLastNameInitiator").val($("#<%= txtLastName.ClientID %>").val());
return true;
}
})
关闭按钮JQUERY
$("[id*=btnClose]").live("click", function (e) {
//e.preventDefault();
$("#modal_dialog").dialog('close');
return true;
})
如果可能的话,请在jquery中向我介绍e.preventDefault()和appendTo函数。
请帮助。
提前致谢,
答案 0 :(得分:0)
preventDefault将允许您更改元素的默认行为。例如,提交按钮将尝试在单击时提交表单,尝试转到href的链接,锚标记将尝试转到其锚点。 preventDefault将阻止该默认行为,因此您可以使用jQuery控制操作并执行其他操作。
这可能是您的一些问题的根源,因为您正在阻止默认行为,例如帖子或提交哪些网络表单依赖。
Web表单和jquery并不总是很好玩。进入jQuery /客户端的次数越多,您可能希望转向ASP.Net MVC。
使用网络表单我也会静态标识ClientIDMode = UI.ClientIDMode.Static
,因为jQuery将依赖ID来查找元素,而网页表单将重命名所有内容。
答案 1 :(得分:0)
问题1:您正在使用UseSubmitBehavior =“false”作为搜索按钮。这将不允许.net使用常规服务器端事件(在本例中为按钮单击)来执行。
如果要禁用控件的常规功能(如锚标记的超链接功能),则使用e.preventDefault()。