Javascriptを埋め込む際の注意事項
以前、ASP.NETでJavascriptを使いたいときにどうするかを調べましたが、今回はJavascriptで画面上の部品にアクセスしたいときのやり方です。
- やりたいこと
- チェックボックスのon/offでテキストボックスの編集可否を切り替える。
HTMLの場合
参考:チェックボックスでテキストボックスの有効、無効を切り替えます - JavaScript スタイルシートサンプル集
<SCRIPT language="JavaScript"> <!-- function chk(){ if (document.form_name.checkbox_name.checked){ //checked チェックが入っていたら document.form_name.textbox_name.disabled = true; // 入力不可, 無効化 } else { document.form_name.textbox_name.disabled = false; // 入力可能,有効化 } } // --> </SCRIPT>
※form_nameはformタグに指定したname、checkbox_nameはチェックボックスに指定したname、textbox_nameはテキストボックスに指定したnameとします。
ASP.NETでマスターページを使っている場合、上記のソースを記述してもうまくいきません。なぜなら、ASP.NETが出力するHTMLは、テキストボックスやチェックボックスといったコンポーネントに自動でnameを設定してしまうからです。
解決策
ASP.NETが(勝手に)設定するnameには命名規則があるようです。
マスターページを使っている場合
マスターページを使っていない場合はコンポーネントに設定したidがそのままHTMLに吐かれるようです。結局ブラウザで表示させてみて、HTMLソースを見て確かめないと駄目ですね。
*1:ctl00が何をあらわしているかは不明。。