0

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Master.master.cs" Inherits="Master" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">    
    <asp:ContentPlaceHolder id="head" runat="server">
    <%--Place for title--%>
    </asp:ContentPlaceHolder>
    <link rel="stylesheet" href="css/layout.css" type="text/css" media="all"/>
    <link rel="stylesheet" href="css/style.css" type="text/css" media="all"/>        
    <script src="js/jquery-1.8.2.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/script.js"></script>
       <link href="css/loginPopup.css" rel="stylesheet" type="text/css" />            
</head>      
<body>
<form id="form1" runat="server">    
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>            
      <div class="body1">      
            <div class="main">
……
……

内容页:

<%@ Page Title="" Language="C#" MasterPageFile="~/Master.master" AutoEventWireup="true" CodeFile="register.aspx.cs" Inherits="register" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<title>Register with Us</title>
  <link href="css/template.css" rel="stylesheet" type="text/css" />
  <link href="css/validationEngine.jquery.css" rel="stylesheet" type="text/css" />
  <script src="js/jquery.validationEngine.js" type="text/javascript"></script>
  <script src="js/jquery.validationEngine-en.js" type="text/javascript"></script>  
    <script type="text/javascript">
        jQuery(document).ready(function () {
            jQuery("#form1").validationEngine();
        });
</script>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="main_body" Runat="Server">
        <div class="body2">
            <div class="main">
…….
…….

问题

尊敬的先生,正如您在我上面的内容页面中看到的,有一个使用表单 id( form1) 的 jQuery 函数。问题是表单/表单 ID 在母版页中。这就是为什么这个 jQuery 函数不起作用的原因。请告诉我解决方案来帮助我。

4

2 回答 2

2

在 asp.net webforms 中生成的 html 元素没有相同的服务器端 Id,但您可以通过 ClinetID 属性访问该 Id:

jQuery("#<%=form1.ClientID %>").validationEngine();
于 2013-09-18T12:33:40.950 回答
1

jQuery 选择器

在您的 jQuery 选择器中,您需要考虑到表单的名称可能已更改,尤其是因为它是runat="server".

使用对表单使用通配符搜索的选择器,这样的事情应该可以工作:

$("form[id$='form1']")

或者更具体地针对您的使用场景:

jQuery("form[id$='form1']").validationEngine(); 
// $ is a shortcut for jQuery so either can be used

查看jQuery 选择器以获取更多选项。

客户端与服务器端

我通常选择客户端 javascript,并且只在绝对必要的情况下混合 2。在这些情况下,我选择使用 IIFE 模式并注入一些属性服务器端值(即使用<%=form1.ClientID %>VahidND 建议的语法)。我尝试在我的 aspx 文件中保留最少的 javascript。这有助于组织您的 Web 应用程序,并使其在 Firefox 和 Chrome 中更容易调试。一般来说,您只需使用以selector et al结尾$=的 jQuery 语法就可以了;当你的页面变得更接近现实生活的复杂性,你会发现你会使用它。

ASP.NET Web 窗体

ASP.NET Web 窗体的一个主要缺点是每页只能使用一个窗体。如果您将自己的表单添加到页面,这也可能会给您带来一些问题。

于 2013-09-18T11:56:49.543 回答