2016-05-27 10 views
0

私はいくつかのドロップダウンリストを設定するためのスクリプトを用意しています。 関数はDjangoでURLを呼び出します。手動更新でJQueryを実行する

これは私が持っている問題である:私はページをロードしたい場合は

、start_datesのドロップダウンが満たされる必要があるとEND_DATEのドロップダウンが空に保たれるべきです。
start_datesドロップダウンで値を選択すると、もう1つのスクリプトが実行され、end_datesドロップダウンに入力されます。

start_datesのドロップダウンを更新する関数を呼び出すので、start_dateに値が選択されていないため、end_datesを更新する関数が自動的に呼び出され、エラーが発生します。

日付を手動で選択すると、end_datesの関数のみを呼び出すことはできますか?

<script> 
    $(document).ready(function ({}) { 
     json_to_select("{% url "get_start_dates_list" %}", "#id_start_date"); 
    }); 

    $(function() { 
     $("#id_start_date").change(function() { 
      json_to_select("{% url "get_end_dates_list" 4545645 %}".replace("4545645", $(this).val()), "#id_end_date") 
     }) 
    }); 

    function json_to_select(url, select_selector, oncomplete) { 
     var opt = $(select_selector); 
     opt.html(""); 
     opt.append($("<option/>").val(0).text("loading")); 
     opt.change(); 

     $.getJSON(url, function (data) { 
      var opt = $(select_selector); 
      var old_val = opt.val(); 
      opt.html(""); 
      opt.append($("<option/>").val("").text("---------")); 
      $.each(data, function() { 
       opt.append($("<option/>").val(this.id).text(this.value)); 
      }); 
      opt.val(old_val); 
      opt.change(); 

      if (oncomplete) { 
       oncomplete(); 
      } 
     }) 
    } 
</script> 

答えて

1

開始日の値が最初に設定されているかどうかを示す変数を使用します。この最初の時点で終了日付値を変更無視:STARTDATEの値を変更する際に行われるべきfirsttimeをcheking

var firstTime = true; 

$("#id_start_date").change(function(){ if(!firstTime){ 
      json_to_select("{% url "get_end_dates_list" 4545645 %}".replace("4545645", $(this).val()), "#id_end_date"); 
    firstTime = false;} 
     }); 

とそれは私のコードで最高の場所ではないかもしれませんが、そののみ表示するようにアイディア。

関連する問題