2016-08-11 2 views
0

동적으로 여러 선택 목록을 만들었습니다. 채널 이름을 클릭 할 때 유형을 가져와야합니다. 문제는 한번 선택 목록을 클릭하면 자바 스크립트 함수가 반복적으로 호출되어 아약스가 여러 번로드됩니다.
HTML 코드 :동적으로 생성 된 선택 목록은 javascript 함수에 mutilple 호출을 만듭니다.

<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 (이)"select 태그 //에서 이미 $ ("채널 동영상을."을 사용하기 때문에) .live ("change", function() {자바 스크립트에서

넣어이

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

및 자바 스크립트

$(".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

감사합니다. 선택 코드와 $ (". 채널 이름")에서 get_type (this)을 유지했습니다. javascritpt 함수에서 change (function() {작업 중입니다 ... – Arti

+0

아약스 처리는 데이터를로드하는 데 10 초가 걸립니다. – Arti

관련 문제