「ポップアップメニューでラジオボタン」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「= 概要 = ポップアップメニューを使ったラジオボタン(のようなもの)です。 = 機能 = * 選択項目は、{ items :["項目1","項目...」 |
<source>タグを<syntaxhighlight>タグに置き換える |
||
| 12行目: | 12行目: | ||
= コード = | = コード = | ||
< | <syntaxhighlight lang="javascript"> | ||
// radiobtn.js | // radiobtn.js | ||
// 2014/01/26 | // 2014/01/26 | ||
| 80行目: | 80行目: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
= その他 = | = その他 = | ||
* おかしなところがあったら教えてください。 | * おかしなところがあったら教えてください。 | ||
2023年5月16日 (火) 23:31時点における版
概要
ポップアップメニューを使ったラジオボタン(のようなもの)です。
機能
- 選択項目は、{ items :["項目1","項目2","項目3"], selected : 数値(初期インデックス) }という連想配列の配列で与えてください。配列の要素が一つの選択グループです。
- 返り値も、連想配列の配列です。
- キャンセルしたときの返り値は、与えた連想配列です。
- 予め連想配列を変数にしておいた方が使いやすいと思います。
履歴
- 2014/01/26 初版
コード
// radiobtn.js
// 2014/01/26
var orientation = { items:["landscape","portrait"] , selected:1 };
var paper = { items:["A4","B5","letter"] , selected:0 };
var printer = { items:["pdf","EPSON","CANON","OKI","other"] , selected:0 };
// 使用方法その1
var ret = radiobtn( [ printer, paper, orientation ] );
for ( var i = 0; i < ret.length; i++ ){
Alert( ret[ i ].items[ ret[ i ].selected ] );
}
// 使用方法その2
radiobtn( [ printer, paper, orientation ] );
Alert( printer.items[ printer.selected ] );
Alert( paper.items[ paper.selected ] );
Alert( orientation.items[ orientation.selected ] );
function radiobtn( arg1 ){
var menuitems = arg1;
var off = 5, selcan = 0, selok = 1;
// 初期値の保存
for ( var i = 0; i < menuitems.length; i++ ){
menuitems[ i ].initial = menuitems[ i ].selected;
}
var r = 0;
while( r >= 0 ){
r = showPopupMenu();
switch ( r ){
case selcan - off:
for ( var i = 0; i < menuitems.length; i++ ){
menuitems[ i ].selected = menuitems[ i ].initial;
}
return menuitems;
case selok - off:
return menuitems;
default :
var i = 0;
while( r > menuitems[ i ].items.length - 1 ){
r = r - menuitems[ i ].items.length;
i++;
}
menuitems[ i ].selected = r;
}
}
function showPopupMenu(){
var menu = CreatePopupMenu();
var idx = 0;
for ( var i = 0; i < menuitems.length; i++ ){
var submenu = CreatePopupMenu();
menu.AddPopup( menuitems[ i ].items[ menuitems[ i ].selected ], submenu );
for ( var k = 0; k < menuitems[ i ].items.length; k++ ){
submenu.Add( menuitems[ i ].items[ k ] , idx + off, 0 );
idx++;
}
}
menu.Add( "---", 0, meMenuSeparator );
menu.Add( "キャンセル", selcan, 0 );
menu.Add( "選択終了", selok, 0 );
return menu.track( 0 ) - off;
}
}
その他
- おかしなところがあったら教えてください。
スポンサーリンク