JQUERY验证后未触发服务器事件

时间:2014-01-19 01:26:16

标签: jquery asp.net

我是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函数。

请帮助。

提前致谢,

2 个答案:

答案 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()。