带母版页的Jquery弹出层弹不出来了,请教!

zznice 2013-05-19 05:25:59
 
$("#phonetype").click(function () {
$.layer({
type: 2,
title: ['机型选择', false],
iframe: { src: '1.aspx' },
area: ['980px', '500px'],
offset: ['80px', '20%'],
closeBtn: [0, true],
shadeClose: true
});
})

以上代码放在B.aspx页面,运行正常,可以弹出层,也可以正常操作
当把B.aspx加入到母版页A.master后,就不能正常工作了,点击以后没有反应,请问是怎么回事

B页面移入母版页后,jquery-1.9.1.min.js,jquery-ui-1.8.20.custom.min.js,layer.min.js三个文件也移到母版页了
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zznice 2013-05-22
  • 打赏
  • 举报
回复
再次感谢两位版主的热心解答,谢谢!
zznice 2013-05-22
  • 打赏
  • 举报
回复
问题解决了,相信还会有很多人会遇到这个问题,现将解决方法分享出来,供大家参考,这个是微软的问题,具体的说是.net加载母版页后,服务器控件加载到客户端后,ID会改变,造成JS取到的值与后台控件设定的ID不一致,网上有三种方法解决,如楼上几位版主所述的方法,如注册下服务器控件,如在JS按服务生成ID的规则拼接ID等,但都有各自的缺点,微软可能也发现了这个问题,所以在在ASP.NET 4.0中的每个控件上都多了一个叫做ClientIDMode的属性,这就是解决上面获取控件ID难的解决方案。这个属性有四个可选值,根据所选值的不同它可以控制页面上生成控件的ID格式。 现在我们可以通过设置控件的ClientIDMode修改clientId的输出形式,例如下面代码: [code=csharp <asp:TextBox ID="txtPredictable" runat="server" ClientIDMode="Predictable"></asp:TextBox> <asp:TextBox ID="txtAutoID" runat="server" ClientIDMode="AutoID"></asp:TextBox> <asp:TextBox ID="txtInherit" runat="server" ClientIDMode="Inherit"></asp:TextBox> <asp:TextBox ID="txtStatic" runat="server" ClientIDMode="Static"></asp:TextBox> [/code] 将分别输出

<input name="ctl00$MainContent$txtPredictable" type="text" id="MainContent_txtPredictable" /> 
    <input name="ctl00$MainContent$txtAutoID" type="text" id="ctl00_MainContent_txtAutoID" /> 
    <input name="ctl00$MainContent$txtInherit" type="text" id="MainContent_txtInherit" /> 
    <input name="ctl00$MainContent$txtStatic" type="text" id="txtStatic" /> 

Go 旅城通票 2013-05-21
  • 打赏
  • 举报
回复
有多个控件你要增加多个js变量来记录对应的客户端id,楼主学下基础的html吧,少用些服务器控件
zznice 2013-05-20
  • 打赏
  • 举报
回复
引用 1 楼 net_lover 的回复:
母板页中的id已经不是服务器控件的id了,如果服务器控件,则客户端应该写 $("#<%=phonetype.ClientID%>").click(function ().... 其他代码类似
谢谢版主,还有一事请教您,就是从弹出层里怎么传值到带母版页的子页上的控件
zznice 2013-05-20
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
因为你控件id变了,如果没有必要,使用客户端的控件,而不是服务器端的,这样id就不会变了,看你的要求应该不需要服务器端的控件。 一定要用服务器端控件,你可以查看B.aspx客户端源代码id变成什么样的了,然后修改1.aspx中的id 或者将id保存到js变量中 b.aspx
var phonetype='<%=phonetype.ClientID%>';//////////
var phoneid='<%=phoneid.ClientID%>'
$("#"+phonetype).click(function () {///////////////
                $.layer({
                    type: 2,
                    title: ['机型选择', false],
                    iframe: { src: '1.aspx' },
                    area: ['980px', '500px'],
                    offset: ['80px', '20%'],
                    closeBtn: [0, true],
                    shadeClose: true
                });
            })
1.aspx
   $(function () {
        $("input[type='button']").click(function () {
            $("#"+window.parent.phonetype, /////////////
window.parent.document).val($(this).prev(["input"]).val());
            $("#"+window.parent.phoneid/////////
, window.parent.document).val($(this).next(["input"]).val());
            var index = parent.layer.getFrameIndex();
            parent.layer.close(index);
 
        });
    })

你好,版主,按您的方法试了一下,还是不行,关于b.aspx这个页面,我没采用AJAX方式,而是放了一个表单,上面放了N个服务器控件,用于向数据库插入记录用的。
Go 旅城通票 2013-05-20
  • 打赏
  • 举报
回复
因为你控件id变了,如果没有必要,使用客户端的控件,而不是服务器端的,这样id就不会变了,看你的要求应该不需要服务器端的控件。 一定要用服务器端控件,你可以查看B.aspx客户端源代码id变成什么样的了,然后修改1.aspx中的id 或者将id保存到js变量中 b.aspx
var phonetype='<%=phonetype.ClientID%>';//////////
var phoneid='<%=phoneid.ClientID%>'
$("#"+phonetype).click(function () {///////////////
                $.layer({
                    type: 2,
                    title: ['机型选择', false],
                    iframe: { src: '1.aspx' },
                    area: ['980px', '500px'],
                    offset: ['80px', '20%'],
                    closeBtn: [0, true],
                    shadeClose: true
                });
            })
1.aspx
   $(function () {
        $("input[type='button']").click(function () {
            $("#"+window.parent.phonetype, /////////////
window.parent.document).val($(this).prev(["input"]).val());
            $("#"+window.parent.phoneid/////////
, window.parent.document).val($(this).next(["input"]).val());
            var index = parent.layer.getFrameIndex();
            parent.layer.close(index);
 
        });
    })

zznice 2013-05-19
  • 打赏
  • 举报
回复
用母版本还真是闹心啊,之前用都正常,加了母版页就麻烦来了
zznice 2013-05-19
  • 打赏
  • 举报
回复

<script>
    $(function () {
        $("input[type='button']").click(function () {
            $("#phonetype", window.parent.document).val($(this).prev(["input"]).val());
            $("#phoneid", window.parent.document).val($(this).next(["input"]).val());
            var index = parent.layer.getFrameIndex();
            parent.layer.close(index);

        });
    })
</script>
谢谢版主,按您的方法,搞定了,但是新问题出来了 上面的代码是放在1.aspx里用于通过点击按钮将值传给B.aspx页面的,之面可以,但是将B页加入到母版页后,上面的代码不能传值到B页了,我设成 $("#<%=phonetype.ClientID%>", window.parent.document).val($(this).prev(["input"]).val()); 也不行
孟子E章 2013-05-19
  • 打赏
  • 举报
回复
母板页中的id已经不是服务器控件的id了,如果服务器控件,则客户端应该写 $("#<%=phonetype.ClientID%>").click(function ().... 其他代码类似
ASP.NET ASP.NET 概述 ASP.NET 是一个统一的 Web 开发模型,它包括您使用尽可能少的代码生成企业级 Web 应用程序所必需的各种服务。ASP.NET 作为 .NET Framework 的一部分提供。当您编写 ASP.NET 应用程序的代码时,可以访问 .NET Framework 中的类。您可以使用与公共语言运行库 (CLR) 兼容的任何语言来编写应用程序的代码,这些语言包括 Microsoft Visual Basic、C#、JScript .NET 和 J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 ASP.NET 应用程序。 ASP.NET 包括: 和控件框架 ASP.NET 编译器 安全基础结构 状态管理功能 应用程序配置 运行状况监视和性能功能 调试支持 XML Web services 框架 可扩展的宿主环境和应用程序生命周期管理 可扩展的设计器环境 和控件框架 ASP.NET 和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网。可以从任何浏览器或客户端设备请求 ASP.NET 网,ASP.NET 会向请求浏览器呈现标记(例如 HTML)。通常,您可以对多个浏览器使用相同的,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如 Microsoft Internet Explorer 6 的特定浏览器设计 ASP.NET 网,并利用该浏览器的功能。ASP.NET 支持基于 Web 的设备(如移动电话、手持型计算机和个人数字助理 (PDA))的移动控件。 ASP.NET 网是完全面向对象的。在 ASP.NET 网中,可以使用属性、方法和事件来处理 HTML 元素。ASP.NET 框架为响应在服务器上运行的代码中的客户端事件提供统一的模型,从而使您不必考虑基于 Web 的应用程序中固有的客户端和服务器隔离的实现细节。该框架还会在处理生命周期中自动维护及该上控件的状态。有关更多信息,请参见 ASP.NET 网概述。 使用 ASP.NET 和控件框架还可以将常用的 UI 功能封装成易于使用且可重用的控件。控件只需编写一次,即可用于许多并集成到 ASP.NET 网中。这些控件在呈现期间放入 ASP.NET 网中。 ASP.NET 和控件框架还提供各种功能,以便可以通过主题和外观来控制网站的整体外观和感觉。可以先定义主题和外观,然后在面级或控件级应用这些主题和外观。有关更多信息,请参见 ASP.NET 主题和外观概述。 除了主题外,还可以定义母版,以使应用程序中的具有一致的布局。一个母版可以定义您希望应用程序中的所有(或一组)所具有的布局和标准行为。然后可以创建包含要显示的特定内容的各个内容。当用户请求内容时,这些内容母版合并,产生将母版的布局与内容中的内容组合在一起的输出。有关更多信息,请参见 ASP.NET 母版概述。 ASP.NET 编译器 所有 ASP.NET 代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将 ASP.NET 编译为本机代码,从而提供增强的性能。 ASP.NET 包括一个编译器,该编译器将包括和控件在内的所有应用程序组件编译成一个程序集,之后 ASP.NET 宿主环境可以使用该程序集来处理用户请求。有关更多信息,请参见 ASP.NET 编译概述。 安全基础结构 除了 .NET 的安全功能外,ASP.NET 还提供了高级的安全基础结构,以便对用户进行身份验证和授权,并执行其他与安全相关的功能。您可以使用由 IIS 提供的 Windows 身份验证对用户进行身份验证,也可以通过您自己的用户数据库使用 ASP.NET Forms 身份验证和 ASP.NET 成员资格来管理身份验证。此外,可以使用 Windows 组或您自己的自定义角色数据库(使用 ASP.NET 角色)来管理 Web 应用程序的功能和信息方面的授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。有关更多信息,请参见下列主题: ASP.NET 网站安全性 使用成员资格管理用户 使用角色管理授权 Forms 身份验证提供程序 ASP.NET 始终使用特定的 Windows 标识运行,因此,您可以通过使用 Windows 功能(例如 NTFS 访问控制列表 (ACL)、数据库权限等等)来保护应用程序的安全。有关 ASP.NET 标识的更多信息,请参见配置 ASP.NET 进程标识和 ASP.NET 模拟。 状态管理功能 ASP.NET

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧