DOBON.NETプログラミング掲示板過去ログ
チェックボックスでJavaScriptのonfocusイベントをASP.NET上から作成したいが作成しても動作しません。
題名: チェックボックスでJavaScriptのonfocusイベントをASP.NET上から作成したいが作成しても動作しません。
著者: kiyo7447
日時: 2007/05/30 13:48:23
ID: 19779
この記事の返信元:
(なし)
この記事への返信:
[19784]
チェックボックスでJavaScriptのonfocusイベントをASP.NET上から作成したいが作成しても動作しません。
kiyo7447
2007/05/31 8:32:17
[解決]
ツリーを表示
環境/言語:[WinXPSP2、C#、.NET Framework2.0 + Ajax(Microsoft Ajax Toolkit)]
分類:[ASP.NET]
こんにちは。アべです。
チェックボックスでJavaScriptのonfocusイベントを作成したいが
動作せずに困っております。
下記のコードを記述しておりますが、
if (CurrentControl is CheckBox)
{
(CurrentControl as WebControl).Attributes.Add("onfocus", "alert('focus');");
}
作成されるHTMLが
<span onkeydown="FocusScript('ctl00_ContentPlaceHolder1__dropDownListSumai');"
onfocus="OnFocus(this);">
<input id="ctl00_ContentPlaceHolder1__checkBoxOkuri"
type="checkbox" name="ctl00$ContentPlaceHolder1$_checkBoxOkuri" />
<label for="ctl00_ContentPlaceHolder1__checkBoxOkuri">指定あり</label>
</span>
となっており、なぜかspanタグにイベントがくっついてしまっております。
⇒テキストボックス、ドロップダウンリスト、リストボックス、ボタンは
このロジックで問題なく実装でき動作していますが、なぜか、
チェックボックスだけは動作しません。
また、回避策もわからずに困っています。
回避の方法や、この当りの問題に関する情報をお持ちの方アドバイスをお願いいたします。
宜しくお願い致します。
---
阿部清隆
題名: チェックボックスでJavaScriptのonfocusイベントをASP.NET上から作成したいが作成しても動作しません。
著者: kiyo7447
日時: 2007/05/31 8:32:17
ID: 19784
この記事の返信元:
[19779]
チェックボックスでJavaScriptのonfocusイベントをASP.NET上から作成したいが作成しても動作しません。
kiyo7447
2007/05/30 13:48:23
この記事への返信:
(なし)
ツリーを表示
こんにちは。アべです。
何とか対処療法で解決しました。
C#でイベントを追加するとspanタグにイベントが付加され、
これをどうしても回避できないということでJavaScriptの
処理でイベントを野追加を行いました。
追加してみたところ、どうもPOSTBACKするとイベントが消える
ことがわかり、仕方なく、毎回RegisterStartupScriptめそっで
イベントを追加することにしました。
引き続き正攻法なやり方があればアドバイスをお願いします。
とりあえず回避できたのでご報告まで。
---C#(POSTBACK時)
//CheckBoxの不具合対応
ScriptManager.RegisterStartupScript(
this.Page,
typeof(_Default),
"ScriptOnFocusByCheckBox",
SCRIPT_ONFOCUS_BY_CHECKBOX,
true);
---JavaScriptのコード
const string SCRIPT_ONFOCUS_BY_CHECKBOX =
@"
var elements = document.getElementsByTagName('input');
var onfocusHandler = function() {
try {
OnFocus(event.srcElement);
} catch (e) {debug('checkbox onfocus error:' + e.message);}
}
for (var i = 0; i < elements.length; i++) {
if (elements[i].type == 'checkbox') {
if (navigator.appVersion.match(/\bMSIE\b/)) {
//IEの場合の処理
elements[i].attachEvent('onfocus', onfocusHandler);
}
else {
elements[i].addEventListener('onfocus', onfocusHandler, false);
}
}
}";
---
阿部清隆
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[ASP.NET]
こんにちは。アべです。
チェックボックスでJavaScriptのonfocusイベントを作成したいが
動作せずに困っております。
下記のコードを記述しておりますが、
if (CurrentControl is CheckBox)
{
(CurrentControl as WebControl).Attributes.Add("onfocus", "alert('focus');");
}
作成されるHTMLが
<span onkeydown="FocusScript('ctl00_ContentPlaceHolder1__dropDownListSumai');"
onfocus="OnFocus(this);">
<input id="ctl00_ContentPlaceHolder1__checkBoxOkuri"
type="checkbox" name="ctl00$ContentPlaceHolder1$_checkBoxOkuri" />
<label for="ctl00_ContentPlaceHolder1__checkBoxOkuri">指定あり</label>
</span>
となっており、なぜかspanタグにイベントがくっついてしまっております。
⇒テキストボックス、ドロップダウンリスト、リストボックス、ボタンは
このロジックで問題なく実装でき動作していますが、なぜか、
チェックボックスだけは動作しません。
また、回避策もわからずに困っています。
回避の方法や、この当りの問題に関する情報をお持ちの方アドバイスをお願いいたします。
宜しくお願い致します。
---
阿部清隆