我有一个用户控件A与另一个用户控件B一起坐在页面上。

控件A拥有自己的功能,其中包括一些导致回发(下拉菜单,复选框等)的控件。

我控制B。我不控制A。

B需要隐藏A中存在的按钮。

在B中,我具有如下标记和脚本:

<body onload="OnPageLoad();">
...

  function OnPageLoad() {
    $("input[name$='btnInPartA']").hide();
...


加载页面后,这成功地将按钮隐藏在A中。

只要从A触发回发,该按钮就会重新出现。

如何隐藏该按钮?每当发生回发时,我都希望触发我的javascript代码,但是我愿意接受其他想法。

这是B部分的标记:

<body onload="OnPageLoad();">
  <div id="divDonationExtensionFields">
    <div id="divSubmitButton">
      <input type="button" id="btnCZDonate" value="Donate Now" onclick="btnCZDonate_OnClick();" />
    </div>
  </div>
</body>

<script type="text/javascript">
  function OnPageLoad() {
    alert("OnPageLoad fired!");
    $("input[name$='btnNext']").hide();
  }

  function btnCZDonate_OnClick() {
    //do whatever part A was going to do
    $("input[name$='btnNext']").click();
    //do some custom stuff after that
  }
</script>

最佳答案

尝试使用pageLoad特殊功能,而不要订阅onload处理程序。区别在于pageLoad将在每次回发中调用,无论它是否是局部的。似乎已经完成了部分回发,这重新显示了您隐藏的按钮,并且在这种情况下不会调用onload函数:

<head runat="server">
    <title></title>
    <script type="text/javascript">
        function pageLoad() {
            alert("OnPageLoad fired!");
            $("input[name$='btnNext']").hide();
        }
    </script>
</head>
<body>
    ...
</body>


您可以阅读有关pageLoad的更多信息,以及$(document).ready中与onload(或this article)的区别。

09-25 21:30