
Selectボックスの一覧表示方法
いつもお世話になりますm(__)m
<input type='text' name='hoge1'>
<select name='hoge2'>
<option value='1'>Aあああ</option>
<option value='2'>Bいいい</option>
<option value='3'>Cううう</option>
</select>
上記のフォームがあった場合、hoge1を入力して、TABキーでhoge2のSelectボックスにフォーカスが移動した時、hoge2の一覧を表示させたいのですが、可能でしょうか?
hoge2にフォーカスがある時に、キーボードのALT+↓を押した時と同じ動作を自動でしたいと思っています。
※Accessでいうところの、xx.Dropdownと同じです
いろいろ調べたところ、「onfocus="this.size=5"」でSelectボックス自体のサイズを変更して表示する方法は見つかりました。
しかし、上記のようにSelectボックス自体のサイズを変更せず、まさにALT+↓を押した状態(一覧が表示される状態)にしたいと考えています。
javascriptのonfocusで出来そうな気がするのですが、お詳しい方、是非ともお力添え下さい。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
JavaScriptとActiveXコントロールの連携などで実装可能と思いますが
擬似的なリスト表示で構わないのであれば
DHTMLとCSSを使って擬似的にフォーカス取得時に
ドロップダウンリストを表示する方法はどうでしょうか。
<body onLoad="XXXX">
<input type='text' name='hoge1'>
<select name='hoge2'>
<option value='1'>Aあああ</option>
<option value='2'>Bいいい</option>
<option value='3'>Cううう</option>
</select>
<DIV id="myList"><DIV>
</body>
◆ページonLoad時 (DIVタグ非表示)
document.getElementById("myList").style.visibility = "hidden";
◆Selectボックスのonfocus時 (DIVタグ表示)
var obj document.getElementById("myList");
obj.style.color = '#000000'; //文字色黒
obj.style.fontSize ='12';
obj.style.backgroundColor ='#ffffff';
obj.style.borderTopColor ='#000000';
obj.style.borderBottomColor ='#000000';
obj.style.borderLeftColor ='#000000';
obj.style.borderRightColor ='#000000';
obj.style.left = 10;
obj.style.top = 10;
obj.style.width = '498px';
obj.style.height = '23px';
//リスト部編集
obj.innerHTML = "Aあああ<BR>Bいいい<BR>Cううう";
obj.style.visibility = "visible";
◆Selectボックスのその他イベント時 (DIVタグ非表示)
document.getElementById("myList").style.visibility = "hidden";
ご回答ありがとうございますm(__)m
なるほど~そういうやり方もあるんですね!
サンプルを掲載頂き、感謝ですm(__)m
少し試してみます!
ありがとうございましたm(__)m
また何かの際には宜しくお願い致します。
No.4
- 回答日時:
ご回答ありがとうございますm(__)m
やはり無理なんですかぁ(>_<)
ありがとうございましたm(__)m
また何かの際には宜しくお願い致します。
No.3
- 回答日時:
続きです。
Windows/IE だけでよいなら、ActiveXのWscriptSkell利用で簡単に出来ました。(ユーザーがActiveXの使用を有効に設定してくれなきゃだめですが)
(例)
<body>
<input type='text' name='hoge1' id="hoge1">
<select name='hoge2' id="hoge2" onclick="alert('click')">
<option value='1'>Aあああ</option>
<option value='2'>Bいいい</option>
<option value='3'>Cううう</option>
</select>
<script type="text/javascript" charset="utf-8">
<!--
var wsh = new ActiveXObject("WScript.Shell");
var target=document.getElementById("hoge2");
document.getElementById("hoge1").onkeydown=function(){
var eve=window.event;
var key=eve.keyCode;
if(key==9){
eve.returnValue = false;
target.focus();
wsh.SendKeys ("%{DOWN}");
}
}
// -->
</script>
</body>
参考URL:http://msdn.microsoft.com/ja-jp/library/cc364423 …
ご回答ありがとうございますm(__)m
サンプルまでお書き頂き、ありがとうございます!
ただ、やはりIE限定とかになっちゃうんですね(^-^;)
ありがとうございましたm(__)m
また何かの際には宜しくお願い致します。
No.2
- 回答日時:
Selectボックスをクリックすると、キーボードのALT+↓を押した時と
同じように一覧表示になりますよねえ、ところがDOMのイベントで、
クリックを発生させても、一覧表示になりません。keydownでもkeypress
でもDOMのイベントからは制御不能みたいです。
(Windows/IEだけならActiveXで出来るのかもしれませんが、調べてません)
ちなみにキーコードは
Tab(9)、Alt(18)、←(37)、↑(38)、→(39)、↓(40)
で、DOMでコードを拾ったり、イベント生成できるので、
いろいろやってみましたが、全部×でした。
下のサンプルで、hoge1でタブキー押したら、hoge2に
focusしてクリックイベントが発生します。イベントが発生しているのは
アラートで確認できるのですが、一覧表示にはなりません。
クリックイベントの他、
var ee=document.createEvent("KeyboardEvent");
ee.initKeyEvent("keydown",true,true,null,false,false,false,false,40,0)
target.dispatchEvent(ee);
とか、いろいろ試したけど全部×でした。
(テストしたサンプル)
<body>
<input type='text' name='hoge1' id="hoge1">
<select name='hoge2' id="hoge2" onclick="alert('click')">
<option value='1'>Aあああ</option>
<option value='2'>Bいいい</option>
<option value='3'>Cううう</option>
</select>
<script type="text/javascript" charset="utf-8">
<!--
var target=document.getElementById("hoge2");
document.getElementById("hoge1").onkeydown=function(e){
var eve=e?e:window.event;
var key=eve.keyCode;
if(key==9){
try{
eve.preventDefault();
}catch(e){
eve.returnValue = false;
}
target.focus();
try{
var ee = document.createEvent("HTMLEvents");
ee.initEvent("click",true,false);
target.dispatchEvent(ee);
}catch(e){
target.click();
}
}
}
// -->
</script>
</body>
ご回答ありがとうございますm(__)m
サンプルを掲載頂き、感謝ですm(__)m
皆様のおかげで無理とわかっただけでも助かりました!
ありがとうございましたm(__)m
また何かの際には宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input>の選択肢をプルダウンメ...
-
プルダウン選択を変更すると、...
-
Selectボックスの一覧表示方法
-
データベースからのarray を j...
-
ラジオボタンとプルダウンを連...
-
select要素のvalueを配列で取得...
-
プルダウンメニューのvalue値を...
-
プルダウン 項目が多いので先頭...
-
ハイパーリンクを別ウインドウ...
-
特定<table>内の<td>の色を変える
-
return trueとreturn falseの用...
-
【jsp/Java】チェックボックス...
-
jqueryとscriptでTABLEのセルを...
-
Selectボックスの幅を自動で広...
-
EclipseでSpringを使用し、テー...
-
Selectの中身をfor文で入れる
-
プルダウンで選択すると、DBの...
-
inputのvalueを変数として使うには
-
Jvasvriptのlengthで個数が取得...
-
送信フォームで送信ボタンをお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでoptionタグを削除...
-
<input>の選択肢をプルダウンメ...
-
プルダウン選択を変更すると、...
-
selectを変更不可にしたい
-
javascriptでセレクトボックス...
-
スマホのフォームでのselect複...
-
プルダウンメニューの件でお願...
-
【JS】selectでchangeした時の...
-
Selectボックスの一覧表示方法
-
AxWebBrowserで開いたWebページ...
-
selectを使った計算
-
selectボックスで選択数を制限...
-
プルダウンメニューのvalue値を...
-
セレクトボックスで選択した内...
-
セレクトメニューの値の取得
-
ラジオボタンとプルダウンを連...
-
プルダウンの選択内容を次のペ...
-
C#(csファイル)とjavascriptと...
-
複数のプルダウンを1つにまとめ...
-
同じ名前のセレクトがある場合...
おすすめ情報