zoukankan      html  css  js  c++  java
  • 页面获取Web控件ID不能正常获取,它惹得祸

    今天碰到个比较奇葩的问题,因为动了一下目标框架,又原来的4.5.1改为3.5,然后又改回来了4.5.1,结果运行项目的时候发现界面js的计算,不能正常获值计算。

    于是就开始找问题呗,先是发现这个二手项目,页面获取控件值的时候,居然直接写死id 【不建议效仿,下文有更合适的解决方案】

    例: $("#ContentPlaceHolder1_TB_ONetSellPrice").val(parseFloat(resultPrice).toFixed(2));

    而原来页面生成的是正常的,自然没问题,但问题出现了,现在生成的ID 不是原来那个了

    例:<input name="ctl00$ContentPlaceHolder1$TB_ONetSellPrice" type="text" id="ctl00_ContentPlaceHolder1_TB_ONetSellPrice" disabled="disabled">

    同学们应该知道了原因吧,的确是前面的框架来回切换导致的。

    本来我想直接在代码上改成 $("#"+"<%=TB_ODifferPrice.ClientID%>").val("");但如果只是这一个控件那当然好办啊,可这牵扯到的是整个项目成千上百的控件。。。

    想来想去还是得把这问题解决,最后发现来回切换框架的时候,配置文件里面发生了一个变动

    捂脸,是的这个就是罪恶的根源,只要把那个pages 改成<pages>。

    说到这里,大家其实在处理服务器控件,页面获取ID时,最好不要采取那么死板的,其实除了上述的<%=TB_ODifferPrice.ClientID%>获取控件ID 

    也可以在控件加上ClientIDMode="Static"

     例:<asp:TextBox ID="TB_ODifferPrice" runat="server" Enabled="false" ClientIDMode="Static"></asp:TextBox>

    这样在js就可以直接$("#TB_ODifferPrice")通过控件ID获取对象。

  • 相关阅读:
    Liunx运维(七)-用户管理及用户信息查询命令
    容器网络原理分析:veth 和 network namespace
    浅谈 Docker 网络:单节点多容器
    浅谈 Docker 网络:单节点单容器
    图图图
    LinkPrediction可能有用的数据集
    2021年展望
    2020年总结
    毕业设计:基于web的外卖订餐系统的设计与实现
    机器学习和数据分析在实体识别方面的简单应用
  • 原文地址:https://www.cnblogs.com/666qq/p/8806538.html
Copyright © 2011-2022 走看看