[PHP-users 14362] Re: フォームの他の部品を参照

柴田俊秀 php-users@php.gr.jp
2003年 3月 28日 (金) 01:08:49 JST


北海道の柴田です。

phpの話ではないのですが......

> こんばんは、奥様です。

こんにちは

> 
> こんな感じでしょうか。
> phpじゃなくてjavascriptですが。。。
> なんかいまいち挙動不信な気がするのでおかしい所あったら教えてくれると
> 助かります。

プルダウン(セレクトボックス)の場合、選択しないと onChangeイベント
が発生しないので、次のプルダウンメニューに反映されないのでは

あまりプログラムを変更しないとすれば、デフォルトを未選択状態にするとか...

> var _subArea = [
    [0,0,""],       ← 追加
>   [1,1,"北海道"],
>   [1,2,"青森"],
>   [1,3,"秋田"],
  [2,0,""],       ← 追加
>   [2,4,"東京"],
>   [2,5,"神奈川"],
>   [3,6,"富山"]
> ];
> 
> var _subSubArea = [
  [4,0,""],       ← 追加
>   [4,1,"池袋"],
>   [4,2,"新宿"],
>   [4,3,"渋谷"]
> ];

それと、次のプルダウンメニュー(delForm)の値はクリアしていますが
自分(chgForm)の値はクリアしていないので、選択し直して、項目が以前より
少ない場合、前に選択した項目がそのまま表示されてしまいます。
そこで
> 
> function chg(subCatAry,pID,chgForm,delForm){
>   if(delForm){
>     for (var i=delForm.options.length-1;i>= 0;i--){
>       delForm.options[i] = null;
>     }
>   }
 ---追加-------------------------------------
  for (var i=chgForm.options.length-1;i>= 0;i--){
    chgForm.options[i] = null;
  }
 ---------------------------------------------
> 
>   var j = 0;
>   for(var i=0;i<subCatAry.length;i++){
>     if(subCatAry[i][0] == pID){
>       chgForm.options[j++] = new Option(subCatAry[i][2],subCatAry[i][1]);
>      }
>   }
> }

※ 検証データ
var _area = [
  [0,0,""],
  [0,1,"北海道・東北"],
  [0,2,"関東"],
  [0,3,"信越・北陸"]
];

var _subArea = [
  [1,0,""],
  [1,1,"北海道"],
  [1,2,"青森"],
  [1,3,"秋田"],
  [2,0,""],
  [2,4,"東京"],
  [2,5,"神奈川"],
  [3,0,""],
  [3,6,"富山"]
];

var _subSubArea = [
  [1,0,""],
  [1,1,"札幌"],
  [1,2,"旭川"],
  [1,3,"函館"],
  [2,0,""],
  [2,1,"青森"],
  [2,2,"一戸"],
  [3,0,""],
  [3,1,"秋田"],
  [4,0,""],
  [4,1,"池袋"],
  [4,2,"新宿"],
  [4,3,"渋谷"],
  [5,0,""],
  [5,1,"横浜"],
  [5,2,"川崎"],
  [5,3,"厚木"],
  [5,4,"横須賀"],
  [5,5,"鎌倉"],
  [6,0,""],
  [6,1,"富山"],
  [6,2,"輪島"],
  [6,3,"能登"]
];

でどうでしょう。



PHP-users メーリングリストの案内