【问题标题】:Server event not fired after JQUERY validationJQUERY 验证后未触发服务器事件
【发布时间】:2014-01-19 01:26:15
【问题描述】:

我是 jquery 新手,请帮我解决以下问题。

我有一个模态弹出窗口,在弹出窗口中我有两个 asp 按钮(搜索和关闭)。单击搜索按钮时我要执行验证,然后触发服务器按钮单击事件,单击关闭按钮时我要关闭对话框。

面临的问题: 1. Onclick 搜索 jquery 验证正在发生,但服务器端事件没有被触发。 2. Onclick of close,对话框只第一次关闭,但点击搜索按钮一次后,关闭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 函数。

请帮忙。

提前致谢,

【问题讨论】:

  • 验证通过还是失败?
  • @Skeen,验证正在运行

标签: jquery asp.net


【解决方案1】:

preventDefault 将允许您更改元素的默认行为。例如,提交按钮将尝试在单击时提交表单,链接尝试转到 href,锚标记将尝试转到其锚点。 preventDefault 将阻止该默认行为,因此您可以使用 jQuery 控制操作并执行其他操作。

这可能是您的一些问题的根源,因为您正在阻止默认行为,例如网络表单所依赖的帖子或提交。

Web 表单和 jquery 并不总是很好用。你越是进入 jQuery/客户端,你可能就越想转向 ASP.Net MVC。

对于网络表单,我也希望您使用静态 ID ClientIDMode = UI.ClientIDMode.Static,因为 jQuery 将在很大程度上依赖于通过 ID 查找元素,并且网络表单将重命名所有内容。

【讨论】:

    【解决方案2】:

    问题 1:您正在使用 UseSubmitBehavior="false" 作为搜索按钮。这将不允许 .net 使用常规的服务器端事件(在这种情况下单击按钮)来执行。

    e.preventDefault() 用于禁用控件的常规功能,例如锚标记的超链接功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多