絞り込み選択リストボックス(NarrowDownSeletionList.js)です。

このスクリプトは、同梱のUtils.jsが予めロード済みであることを前提としています。

パラメータ

NarrowDownSeletionListは1つの必須パラメータを要求します。

  • listItems: リストの構造データ。以下の例を参考にしてください。

以下のパラメータはオプションです。

  • initialValue: 初期値。(*1)
  • warnIncompleteInput: 最後まで入力していない時、警告メッセージを表示するか否か。デフォルトはfalse。
  • initialAutoSelected: 絞り込み選択リストを最初に表示したときに、自動選択(*2)を有効にするか否か。デフォルトはfalse。
  • sendAllLevelValues: 全てのレベルの値をサーバへ送信するか否か。falseの場合は選択状態の最末端レベルの値のみ送信される。デフォルトはfalse。

(*1) 最末端レベルの初期値のみ指定できます。途中のレベルでの初期値の指定はできません。

(*2) 選択肢が一つしかない場合、自動で選択状態にしておく機能。

指定するデータ構造

絞り込みリストを表現するデータ構造は次のとおりです。

キー値"@"にメタデータを入れ、それ以外のエントリはリスト構造を表す再帰的木構造を成します。

  1. {
  2. "@": { "name": [selectタグのname属性の値], "value": [optionタグのvalue属性の値] },
  3. "要素1見出し": {
  4. (以下、再帰構造…)
  5. },
  6. "要素2見出し": {
  7. (以下、再帰構造…)
  8. },
  9. ...
  10. }

具体例は次のサンプルコードを参照してください。

サンプルコード

  1. <html>
  2. <head>
  3. <script src="./Utils.js"></script>
  4. <script src="./NarrowDownSelectionList.js"></script>
  5. </head>
  6. <body>
  7. <form method="post" action="http://localhost:8080/">
  8. <div id="sample"></div>
  9. <input type="submit" value="確認" />
  10. </form>
  11. </body>
  12. <script>
  13. var ndsl = new NarrowDownSelectionList(document);
  14. ndsl.setListItems({
  15. "グループA": {
  16. "@": { "name": "lvl1", "value": "A" },
  17. "グループA-1": {
  18. "@": { "name": "lvl2", "value": "A1" },
  19. "グループA-1-0": {
  20. "@": { "name": "lvl3", "value": "A10" }
  21. },
  22. "グループA-1-1": {
  23. "@": { "name": "lvl3", "value": "A11" }
  24. },
  25. "グループA-1-2": {
  26. "@": { "name": "lvl3", "value": "A12" }
  27. }
  28. },
  29. "グループA-2": {
  30. "@": { "name": "lvl2", "value": "A2" },
  31. "グループA-2-0": {
  32. "@": { "name": "lvl3", "value": "A20" }
  33. },
  34. "グループA-2-1": {
  35. "@": { "name": "lvl3", "value": "A21" }
  36. },
  37. "グループA-2-2": {
  38. "@": { "name": "lvl3", "value": "A22" }
  39. }
  40. }
  41. },
  42. "グループB": {
  43. "@": { "name": "lvl1", "value": "B" },
  44. "グループB-1": {
  45. "@": { "name": "lvl2", "value": "B1" },
  46. "グループB-1-0": {
  47. "@": { "name": "lvl3", "value": "B10" }
  48. },
  49. "グループB-1-1": {
  50. "@": { "name": "lvl3", "value": "B11" }
  51. },
  52. "グループB-1-2": {
  53. "@": { "name": "lvl3", "value": "B12" }
  54. }
  55. },
  56. "グループB-2": {
  57. "@": { "name": "lvl2", "value": "B2" },
  58. "グループB-2-0": {
  59. "@": { "name": "lvl3", "value": "B20" }
  60. },
  61. "グループB-2-1": {
  62. "@": { "name": "lvl3", "value": "B21" }
  63. },
  64. "グループB-2-2": {
  65. "@": { "name": "lvl3", "value": "B22" }
  66. }
  67. }
  68. }
  69. });
  70. // 初期値を復元する場合はこちら
  71. //ndsl.setInitialValue("A21");
  72. var select = ndsl.createNarrowDownSelectListElement();
  73. document.getElementById("sample").appendChild(select);
  74. </script>
  75. </html>