ASP.NETでのJavaScript
2005年 10月 16日
JavaScriptでチェック処理などを行なう手前、
JavaScriptから、Repeater内のコントロールにアクセスする
必要がある。
Repeater内の自動生成されるコントロールのidは、
repeaterのidと行番号とコントロールのidを__ctlとかで
連結したものになっていました。
本当は、__ctlとかに依存しない形でアクセスできるの
が一番よいんだけど、以下みたいな関数を使うことで、
悪い依存を関数内にとじこめて、よしとしてしまいました。
documentは本当は半角です。半角だとblogに怒られましたので;;
この問題の正しい解決方法ってどんな方法なんでしょう?
JavaScriptから、Repeater内のコントロールにアクセスする
必要がある。
Repeater内の自動生成されるコントロールのidは、
repeaterのidと行番号とコントロールのidを__ctlとかで
連結したものになっていました。
本当は、__ctlとかに依存しない形でアクセスできるの
が一番よいんだけど、以下みたいな関数を使うことで、
悪い依存を関数内にとじこめて、よしとしてしまいました。
// repeater内のbuttonのidが指定の形式のボタン配列を返却
// 最初のfromのみを対象とする。
function getButtonsById(repeaterId, buttonId) {
prefix = repeaterId + "__ctl";
sufix = "_" + buttonId;
var buttons = new Array();
var i, n;
for (i = 0, n = 0; i < document.forms[0].elements.length; i++) {
var c = document.forms[0].elements[i];
if (c.type == "button" || c.type == "submit") {
if (c.id.substring(0, prefix.length) == prefix &&
c.id.substring(c.id.length - sufix.length, c.id.length) == sufix) {
buttons[n++] = c;
}
}
}
return buttons;
}
documentは本当は半角です。半角だとblogに怒られましたので;;
この問題の正しい解決方法ってどんな方法なんでしょう?
by smeg_head
| 2005-10-16 19:51
| dotnet