2016-08-11 19 views
0

私は動的に複数の選択リストを作成しました。チャンネル名をクリックすると、そのタイプが取得されます。問題は、一度選択リストをクリックすると、Javaスクリプト関数を繰り返し呼び出すことで、ajaxを複数回読み込むことになります。
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タグ//からすでに$( "CHANNELNAME" を使用しているため).live( "change"、function(){javascript内

put this

<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

感謝。私はselect codeと$( "。channelname")でget_type(this)を保ちました。javascritpt関数でchange(function(){}が働いています – Arti

+0

ajaxの処理にはデータをロードするのに10秒かかります。 – Arti

関連する問題