1

以前の選択に基づいてドロップダウン リストを表示しようとしています。それは動作しません。リストされているすべての値が表示されます。ticket_fields_21114185 は、[デスクトップ、Web ブラウザー] のような値を持つ最初のドロップダウン リストです。ticket_fields_21108325 は、他のすべての値がリストされている 2 番目のドロップダウン リストです。

 $j(document).ready(function() {  
   var ren
   var dtop = ['windows_7'];
   var webrow= ['all','chrome','ie'];  

   //this builds the dropdown list  
   Buildoptions = {      
     selected: function(value, name){    
       return '<option value="'+value+'" selected="selected">'+name+'</option>';     
     },     
     notselected: function(value, name){    
       return '<option value="'+value+'">'+name+'</option>';  
     },      
     clear: function(){    
       return '<option value=""></option>'; 
     } 
   } 
   //goes through the selected array and builds the options  
   var makeSelection = function(theField, theArray) {      
     for ( x = 0; x < theArray.length; x++ ) {              
     console.log('makeing select ' + theArray)         
     if (x == 0)         
        $j(''+ theField +'').append(Buildoptions.notselected(theArray[x], theArray[x]));              

     } 
   }  

   $j('select#ticket_fields_21114185').change( function(){

     ren=$j('select#ticket_fields_21114185 option:selected').val();

     if(ren=='desktop'){
       makeSelection('select#ticket_fields_21108325',dtop);
     }
     else
       makeSelection('select#ticket_fields_21108325',webrow)
   });
});
4

1 に答える 1

0

おそらく、最後のelseステートメントに括弧がありません {}
おそらく、デスクトップが選択されたときに両方の選択がトリガーさ
れます コードを詳しく調べて、これがそうでない場合でも、まだ希望をあきらめません! :)



編集:コードを調べた後、回答よりも多くの質問があります。
少し簡単にするために、HTMLも貼り付けていただけますか(ただし、2つの選択を行うことはできると思います)。
私が正しく理解していれば、2番目の選択は最初の選択に応じて動的データを表示するはずです。
私は次の結論を下しました。

  • あなたのコードにはいくつか欠けています。各ステートメントの後にあちこちに。

  • また、新しい関数を追加する前に動的選択の値を削除するための明確な関数もありません。

  • 配列を使用した for ループは私には奇妙です。なぜ +1 ではなく x+2 なのですか? コードは、配列の最初の値を値として、2 番目の値を名前として使用したいようです。しかし、リストには 6 ではなく 3 つの値しかありませんか?

コードをコピーして貼り付けた可能性はありますか?現在、静的選択の選択が変更されるたびに、動的選択に値と未定義が追加されていますか?

于 2013-10-08T07:25:34.660 に答える