- ベストアンサー
リストボックスを、右クリックでセレクトしたい
お世話になります。 リストボックスがあり、そのリストに対して左クリックと右クリックで、javaScriptの動作を分けたいのです。 詳しくは、 ・左クリックでも右クリックでもリストをセレクト ・左クリックはセレクト+別スクリプト ・右クリックはセレクトのみ ・・・という挙動にしたいのですが、右クリックでリストを選択する or 右クリックされたリストのオプション番号を取得するなどの 方法が分からないのです。 どなたか経験のある方、ご教示いただけませんでしょうか??
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
確かに質問者さんが仰られるとおりIE6ではoptionタグのonclickなどのイベント属性は使えないようですね。 Firefoxなら問題無くイベント属性を使えば右でも左でもvalueの値を取得できるし、W3CのDTDを見るとonContextmenu以外は使えることになっているのに悔しいところですね。 とするとマウスの座標で判別するのが妥当ではないでしょうか。 マウスの座標はここでは語り尽くせないほど複雑な方なので検索結果を載せておきますね。 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2006-05,GGLG:ja&q=%E8%A6%81%E7%B4%A0%E3%80%80%E3%83%9E%E3%82%A6%E3%82%B9%E3%80%80%E4%BD%8D%E7%BD%AE%E3%80%80%E5%8F%96%E5%BE%97 ここでもいくつか参考になる質問を見かけたことがあります。
その他の回答 (2)
- arenani_sorenani
- ベストアンサー率73% (58/79)
私の勘違いかもしれませんが select要素を右クリックでリストをドロップダウンさせて そこから更に右クリでリストを選択する というのであれば・・ ブラウザの仕様として、右クリックではリストはドロップダウンの挙動をしません。 したがって、そこからさらに右クリでリストを選択することはできません。選択もできないリストの、選択位置取得などできるはずがありません。 要素自体は確かに右クリで選択まではできますが、それだけです。 具体的に何がされたいのかを書いてい頂かないとこれ以上は回答できません。 通常のクリックと右クリで何を分けるのか、判りませんが 左右クリ以外にもチェックボックス配置して処理を分けるなど 方法は考えられますので、仕様を変更された方が良いと思います。
補足
ご回答有り難うございます。 >select要素を右クリックでリストをドロップダウンさせて >そこから更に右クリでリストを選択する セレクトする時の動作を左右で・・・というつもりでした。ドロップダウンは双方左です。 チェックボックスで処理を分けると簡単なのですが、ユーザーの手数が増えてしまうので、右クリック選択が出来ないかと考えた末でした。 有り難うございました。
- yambejp
- ベストアンサー率51% (3827/7415)
HTMLの仕様上あまり右クリックを前提としたプログラムは組まない方がよいです。 どうしてもということであれば、以下を参考にしてください <input type="button" value="左・右クリック" onClick="alert('左クリック')" onContextmenu="alert('右クリック');return false">
補足
有難うございます。 ただ、ボタンなどのエレメントに対して「右クリックされた」という情報を得る方法は分かるのですが、リストボックスの場合で「リストのどの部分で右クリックをされたのか」の取得方法についてお尋ねしたかったのです。 左クリックにて選択された時は、Select要素の onClick や onChange のタイミングで「要素名.value」 の値を取得すれば良いのですが、リストの場合ですとonContextmenuのタイミングでもどこの値を取得すればいいのか分からなくて、そちらについてお伺いしたかったのです・・・。
お礼
有り難うございます。 実際はFirefox用ページを作成する機会はないのですが、Firefoxなら値取得が可能なのですね。1つ賢くなりました。 教えていただいたurl、行ってみました。参考になりました。 それと「現状の仕様では出来ない」という事が分かったのと、座標で取得する方法が妥当という事が分かって、助かりました(出来ないと判断するまでの材料集めって大変だし不安です(T^T)>自分の検索能力が足りないだけかも・・・って思ってしまうし)。 有り難うございました。