2

別のユーザー コントロール B と並んでページに配置されているユーザー コントロール A があります。

コントロール 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>
4

1 に答える 1

2

ハンドラー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).readyonloadthis article

于 2013-08-28T16:18:51.293 に答える