- PR -

【ASP.NET】CheckBoxListでAttributes("onclick")に設定したjavascriptが2回起動してしまう。

投稿者投稿内容
Nullぽ
会議室デビュー日: 2005/09/27
投稿数: 13
投稿日時: 2005-09-29 17:50
件名の通りチェックボックスリストで以下のソース

CheckBoxList1.Attributes("onclick") = "javascript:alert('TEST');"

を設定したところ

□ 選択肢1
□ 選択肢2
-- --------
A  B

Aのチェック箇所をクリックの際にはアラートが1度表示されるだけで
思惑通りに動作しているのですが、Bの選択肢部をクリックするとBを
クリックした際にアラートが一度表示され、その後Aの箇所にチェック
が入る際にもう一度アラートが表示されてしまいます。

これは仕様でしょうか? Bをクリックした際にアラートを1度だけ表
示させる方法をご存知の方ご教授願えますでしょうか?

よろしくお願いいたします。 m(_ _)m
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-09-29 17:57
クリックされたのがBだったらアラートを表示するJavaScriptを書けばいい話なのでは。。。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-09-29 18:12
こんにちは。
.NET環境が無いため、べた書きHTMLで確認してみました。

コード:
<HTML>

<HEAD>
<TITLE>チェックボックスリストのアラート</TITLE>
</HEAD>
<BODY>
<FORM>
<input id="CK1_1" type="checkbox" onclick="javascript:alert('TEST');" /><label for="CK1_1">aaaaaaaa</label></br>
<input id="CK1_2" type="checkbox" onclick="javascript:alert('TEST');" /><label for="CK1_2">bbbbbbbb</label></br>
<input id="CK1_3" type="checkbox" onclick="javascript:alert('TEST');" /><label for="CK1_3">cccccccc</label></br>
</FORM>
</BODY>
</HTML>


上記ソースでは、B部分をクリックしてもアラートは1回しか表示されません。

問題のページがどのようなHTMLを出力しているか、確認してみてください。

#コードを短く修正
#日本語を修正
#「ガッ」が必要か悩む。。

[ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-09-29 18:28 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-09-29 18:21
引用:

Bの選択肢部をクリックするとBを
クリックした際にアラートが一度表示され、その後Aの箇所にチェック
が入る際にもう一度アラートが表示されてしまいます。



とあるので、BのあとAをクリックしているんですよね?
当然、クリックイベントは発生します。というか発生しなかったら困ります。
Nullぽ
会議室デビュー日: 2005/09/27
投稿数: 13
投稿日時: 2005-09-29 18:59
burton999様、葉瀬崎浩樹様ご回答ありがとうございます。

HTMLではテーブルが自動で作成され、テーブルのクリックイベントに対して
Attributesで指定したscriptが動作していることが解りました。

ちなみに今回利用しているCheckBoxでは無く、CheckBoxListWebコントロールです。
ご存知かとは思いますが、CheckBoxListWebコントロールはデザイナ側でItemを定義
することにより複数個のCheckBoxを生成してくれるコントロールです。

でご回答遅れまして申し訳ございません。
始めにburton999様にご指摘を受けた方法をCheckBoxListのアイテムの方に定義
出来ないか調査しておりました。

引用:
--------------------------------------------------------------------------------

とあるので、BのあとAをクリックしているんですよね?
当然、クリックイベントは発生します。というか発生しなかったら困ります。

--------------------------------------------------------------------------------
いえクリックしているのは Bの選択肢部分のみです。

Html:
--------------------------------------------------------------------------------
<table id="CheckBoxList1" onclick="javascript:alert('TEST');" border="0" style="Z-INDEX: 101; LEFT: 288px; POSITION: absolute; TOP: 72px">
<tr>
<td><input id="CheckBoxList1_0" type="checkbox" name="CheckBoxList1:0" /><label for="CheckBoxList1_0">選択肢1</label></td>
</tr><tr>
<td><input id="CheckBoxList1_1" type="checkbox" name="CheckBoxList1:1" /><label for="CheckBoxList1_1">選択肢2</label></td>
</tr>
</table>
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-29 19:09
こんにちは、じゃんぬ です。

引用:

Nullぽさんの書き込み (2005-09-29 18:59) より:

<table id="CheckBoxList1" onclick="javascript:alert('TEST');" border="0"


おや? Table 全体に設定されてるように見えますけど...


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Nullぽ
会議室デビュー日: 2005/09/27
投稿数: 13
投稿日時: 2005-09-29 19:20
確かにテーブル全体にしているようです。

CheckBoxList1.Attributes("onclick") = "javascript:alert('TEST');"
とした結果がこのようになりました。

なおテーブルは意図的に作成したテーブルではなく
CheckBoxList webコントロールを利用すると自動的に作成されるテーブルです。

先に述べるべきでしたが、このチェックボックスリストは
ページ作成時に動的に作成しようと考えているチェックリストボックスで
デザインのHTMLビューで先にjavascriptを埋め込むことが出来ないものです。

一番重要な部分が説明不足でした、大変申し訳ございません。。
Nullぽ
会議室デビュー日: 2005/09/27
投稿数: 13
投稿日時: 2005-09-29 19:49
訂正
引用:


デザインのHTMLビューで先にjavascriptを埋め込むことが出来ないものです。




こんなこと出来ませんね^^; 失礼いたしました。

スキルアップ/キャリアアップ(JOB@IT)