2016-08-11 13 views
0

我已動態創建多個選擇列表。點擊頻道名稱時,應該顯示其類型。問題是一旦點擊選擇列表,它會反覆調用導致ajax加載多次的java腳本函數。
HTML代碼:動態創建的選擇列表使多功能調用javascript函數

<td> 
           <SELECT name="channel_name[]" onclick ="get_type(this)"; required class='channelname'> 
             <option value="">Select...</option> 
             <?php foreach($channel_list as $row) { 
               $channelid = $row['channelid']; 
               $channelname = $row['channelname']; 

               if($U_channelid==$channelid) 
               { 
                 $s = "selected = selected"; 
               } 
               else 
               { 
                 $s = ""; 
               } 
               echo "<option value='$channelid' $s>".$channelname."</option>"; 
             ?> 
<!--         <OPTION value='<?php echo $channelid ?>' $s ><?php echo $channelname?></OPTION> --> 

           <?php } ?> 
           </SELECT> 
         </td> 

JavaScipt程式碼:

function get_type() 
{ 
     $(".channelname").live("change", function() { 

       var channel_id = $(this).find("option:selected").attr("value"); 
       var _this = $(this); //Save current object 
       alert(channel_id); 
       $.ajax({ 
         type: "POST", 
         url: '<?php echo base_url(); ?>index.php/partner/get_channel_type', 
         data: 'channelid='+channel_id, 
         async: false 
         }).done(function(data1) { 

         if(data1){ 
           _this.closest("tr").find('input[name="type[]"]').val(data1); 

         }else{ 
           alert("Channel type is not defined"); 
           _this.closest("tr").find('input[name="type[]"]').val(""); 

         } 


       }); 
    }); 
} 

回答

0

刪除的onclick = 「get_type(本)」,從選擇標籤//因爲你已經使用$( 「CHANNELNAME」。 ).live(「change」,function(){in javascript

把這個

<SELECT name="channel_name[]" required class='channelname'> 

和JavaScript

$(".channelname").change(function() { 

       var channel_id = $('.channelname').find("option:selected").attr("value"); 
       alert(channel_id); 
       $.ajax({ 
         type: "POST", 
         url: '<?php echo base_url(); ?>index.php/partner/get_channel_type', 
         data: 'channelid='+channel_id, 
         async: false 
         }).done(function(data1) { 

         if(data1){ 
           _this.closest("tr").find('input[name="type[]"]').val(data1); 

         }else{ 
           alert("Channel type is not defined"); 
           _this.closest("tr").find('input[name="type[]"]').val(""); 

         } 


       }); 
    }); 
+0

感謝。我在選擇代碼和$(「。channelname」)中保留了get_type(this)。在javascritpt函數中改變(function(){它現在工作了 – Arti

+0

ajax處理需要10秒來加載數據。 – Arti