0

これは初歩的な問題だと思いますが(私はそう思います)、ここで質問するのは恥ずかしいです。すでに回答されている可能性がありますが、私の検索では見つかりませんでした。

最も単純な形式では、2 つのチェック ボックスがあり、各 CheckBox にはそれに関連付けられたコントロール (TextBox または DropDownList など) があります。CheckBox のチェック状態が変化した場合、関連付けられたコントロールを有効または無効にする必要があります。

JavaScript 関数:

<script type="text/javascript:>
function enable(bValue, control)
{
   document.getElementByID(control).Enabled = bValue;
}
</script>

以下の HTML では、この関数をイベント プロシージャとして呼び出します。

<body>
    Billable? <asp:CheckBox ID="expBillable" runat="server" Checked="false" OnCheckedChanged="enable(this.Checked, "expJob");" />
    to <asp:DropDownList ID="expJob" runat="server" Enabled="true" />
    <br /><br />
    Billable? <asp:CheckBox ID="itemBillable" runat="server" Checked="false" OnCheckedChanged="enable(this.Checked, "itemJob");" />
    to <asp:DropDownList ID="itemJob" runat="server" Enabled="true" />

問題は、引用符を使用しているため、HTML で「expJob」パラメーターを指定できないことです。一重引用符を使用しても機能しません。

質問: このアプローチは機能しますか? 適切な構文は何ですか?

このような関数を記述して使用する最良の方法は何ですか? グリッド内の行を反復処理する必要がある場合、このような関数の使用が必要になると確信しています。

興味深いことに、私が見たすべての質問/回答は、コントロールの無効化された属性を使用しています。Enabled 属性しか使用できません。誰かが理由を説明できますか?違いは何ですか?

4

2 に答える 2

0
  1. 一重引用符を使用する必要があります ('itemJob')
  2. OnCheckChanged はサーバー イベントだと思います。これを使用する場合、Asp.net ではコード ビハインドにハンドラーが必要です。そのため、エラーが発生しています。クライアント側イベントを発生させたい場合は、正しいクライアント側イベントを見つけてください。ポストバックの起動には注意してください。ただし、チェックボックスのデフォルトは「自動ポストバックなし」です。
于 2012-10-06T10:00:17.573 に答える
-1

JavaScript では大文字と小文字が区別されるので document.getElementById、良いこと document.getElementByIDも悪いこともあります (大文字の ID が悪いことに注意してください)。

于 2013-11-04T17:32:30.127 に答える