FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 9009|回复: 8
打印 上一主题 下一主题

【已解决】用户控件中如何正确使用JavaScript代码

[复制链接]
楼主
发表于 2014-7-4 17:05:00 | 显示全部楼层
给个ZIP包,也好调试
沙发
发表于 2014-7-5 10:30:08 | 显示全部楼层
第一个问题是FineUI的BUG。

第二个问题是自身代码问题:由于页面包含两个相同的用户控件,所以生成的HTML代码也是两份,如下所示:
  1.     <div id="ctl04_wrapper">
  2.                
  3. <script type="text/javascript" >
  4.     function SetV() {
  5.         var id = 'ctl04_ctl00_WebUserControl1_Form3_FormRow1_hf001';
  6.         document.getElementById(id).value = "123";
  7.         alert(document.getElementById(id).value);
  8.     }
  9. </script>

  10.                
  11. <script type="text/javascript" >
  12.     function SetV() {
  13.         var id = 'ctl04_ctl00_WebUserControl2_Form3_FormRow1_hf001';
  14.         document.getElementById(id).value = "123";
  15.         alert(document.getElementById(id).value);
  16.     }
  17. </script>

  18.             </div>
复制代码

很明显,可以看出,第二个 SetV 的定义覆盖了第一个 SetV 的定义,所以页面上对 SetV 的调用只会对第二个控件中的隐藏字段赋值,当然在后台无法取到第一个用户控件中的隐藏字段值。

正确的做法是:
1. 把 SetV 移动到 页面中(test.aspx):
  1. <script type="text/javascript">
  2.         function setV(id) {
  3.             document.getElementById(id).value = "123";
  4.             alert(document.getElementById(id).value);
  5.         }
  6.     </script>
复制代码

2. 把用户控件中的 SetV 删除,然后在后台代码中:
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 btnGeizhi.OnClientClick = String.Format("setV('{0}-inputEl');", hf001.ClientID);
  6.             }
  7.         }
复制代码

还要注意一点:这里只所以在 hf001.ClientID 后面又加个 -inputEl ,是由 HiddenField 生成 HTML 决定的(可以用浏览器调试工具看下生成的HTML结构)。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-23 17:34 , Processed in 0.044333 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表