1

我正在尝试根据先前的选择显示一个下拉列表。这没用。它给了我列出的所有值。ticket_fields_21114185 是我的第一个下拉列表,其中包含 [desktop, web browser] 等值。ticket_fields_21108325 是我的第二个下拉列表,其中列出了所有其他值。

 $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 个选择)。
如果我理解正确,您的第二次选择应该根据第一次选择显示一些动态数据。
我得出以下结论:

  • 您的代码遗漏了一些;在每个语句之后到处都是。

  • 在添加新功能之前,您还缺少一个明确的功能来删除动态选择的值。

  • 你的数组 for 循环对我来说很奇怪,为什么是 x+2 而不是 +1?看起来代码想要使用数组中的第一个值作为值,第二个作为名称。但是您的列表只有 3 个值而不是 6 个?

您是否有可能复制粘贴的代码,并且在静态选择的每次选择更改后,它正在向动态选择添加一个值和未定义?

于 2013-10-08T07:25:34.660 回答