2017-01-02 7 views
1

は、以下のコードは、次のとおりです。Ajaxの負荷の選択オプションを動的

ここではHTMLです:

<select class="form-control" name="category" id="category" onclick="loadCategory();"> 
    <option value="">Choose</option> 
    <option>&nbsp;</option> 
    <option>&nbsp;</option> 
</select> 

ここではJavascriptをです:

function loadCategory() 
{ 
var url = "<?php echo site_url('home/ajax_show_category_options');?>"; 
$('#category').load(url); 
return false; 
} 

ここに私のコントローラです:

public function ajax_show_category_options() 
    { 
    $category = $this->db->get('category')->result(); 
    $data = "<option value=''>-- Choose--</option>"; 
    foreach ($category as $rowCategory) { 
     $data .= "<option value='".$rowCategory->id."'>".$rowCategory->name."</option>"; 
    } 
    echo $data; 
    } 

selectオプションをクリックすると、loadCategory()が実行され、select with current categoryリストが追加されます。質問は私がカテゴリを選択した後、selectオプションはloadCategory()をもう一度実行し、私が選択したvalueオプションは空になります。私はオプションを選択した後にloadCategory()を停止する方法?ありがとう。

+0

'にリスナーをクリックして使用していません'。選択を開いたときとオプションを選択したときに起動します。変更イベントを聞きます – charlietfl

+0

どうすればいいですか? –

+0

onchangeは、オプションが選択/選択解除されたときにのみ起動します。 – charlietfl

答えて

0

この単純なままにするには、グローバルブール変数を設定します。 trueに値を設定し、それが真であるかどうかを確認してからajax callを実行してください。以下の例を考えてみましょう。

var loadedOptions=false;//global variable 
function loadCategory() 
{ 
    if(!loadedOptions){ 
     var url = "<?php echo site_url('home/ajax_show_category_options');?>"; 
     $('#category').load(url,function(){ 
      loadedOptions=true; //set it to true once request is done 
     }); 
    } 
    return false; 
} 

さらに、あなたも offselect elementにバインド解除 click eventを試すことができます[使用している jqueryバージョンに基づいて offの使用方法をチェック]。元

function loadCategory() 
{ 
    var url = "<?php echo site_url('home/ajax_show_category_options');?>"; 
    $('#category').load(url,function(){ 
      $("#category").off('click'); 
    }); 

    return false; 
} 


については

は、以下のようにselect elementからonclickを削除するremoveAttrを使用してみてください:

$('#category').load(url,function(){ 
    $("#category").removeAttr('onclick'); 
}); 
+0

最初に選択オプションをクリックしたときに空の選択を行いました –

+0

'loadedOptions'変数を' false'にグローバルに設定しましたか? –

+0

はい、あります。それは私に無効なオプションのようなものです。ですから、私はonclickの後にid = "category"でonchangeを使用しようとします。それと同じ結果。 –

関連する問題