简体   繁体   English

从jQuery的变化没有做它应该做的

[英]on change from jquery is not doing what it supposed to do

I have 4 Ajax Scripts that update chained dropdowns based on other one selections 我有4个Ajax脚本,它们会根据其他选择来更新链接的下拉列表

  <script type="text/JavaScript">
   //get a reference to the select element

    $select = $('#building');
    //request the JSON data and parse into the select element
    $.ajax({
      url: '/api/get_building/',
      dataType:'JSON',
      success:function(data){
        //clear the current content of the select
        //iterate over the data and append a select option

        $.each(data, function(key, val){
          $select.append('<option value="' + val.id + '">' + val.as_char  + '</option>');
        })
      },
    });

function getunit() {

    //get a reference to the select element
    $select = $('#unit');
    $id_lease = $('#id_lease');
    $id_leaseterm = $('#id_leaseterm');
    //request the JSON data and parse into the select element

    var c_id = ($("select[name='building'] option:selected").attr('value'));
    c_url = "/api/get_unit/"+c_id+"/";

    $.ajax({

      url: c_url,
      dataType:'JSON',
      success:function(data1){
        //clear the current content of the select
        $select.empty();
        $select.append('<option value="-1"> Select unit </option>');
        $.each(data1, function(key, val){
          $select.append('<option value="' + val.id + '">' + val.as_char  + '</option>');
        })
        getlease();
      },

    });

}

function getlease() {

    //get a reference to the select element
    $select = $('#id_lease');
    $id_leaseterm = $('#id_leaseterm');
    //request the JSON data and parse into the select element
    var s_id = ($("select[name='unit'] option:selected").attr('value'));
    s_url = "/api/get_lease/"+s_id+"/";

    $.ajax({
      url: s_url,
      dataType:'JSON',
      success:function(data1){
        //clear the current content of the select
        $select.empty();
        $select.append('<option value="-1"> Select lease</option>');
        //iterate over the data and append a select option

        $.each(data1, function(key, val){
          $select.append('<option value="' + val.id + '">' + val.as_char  + '</option>');
        })
      },

    });

}



function getleaseterm() {

    //get a reference to the select element
    $select = $('#id_leaseterm');
    //request the JSON data and parse into the select element
    var l_id = ($("select[name='lease'] option:selected").attr('value'));
    //var l_id = 13;
    l_url = "/api/get_leaseterm/"+l_id+"/";

    $.ajax({
      url: l_url,
      dataType:'JSON',
      success:function(data1){
        //clear the current content of the select
        $select.empty();
        $select.append('<option value="-1">Select term </option>');
        //iterate over the data and append a select option

        $.each(data1, function(key, val){
          $select.append('<option value="' + val.id + '">' + val.as_char + '</option>');
        })
      },

    });

}
</script>  

And the following controls in my form I am updating 我正在更新的表单中的以下控件

    <select name="building" id="building" onchange="getunit();">
          <option id="-1">Select building</option>
        </select>



    <select name="unit" id="unit" onchange="getlease();">
          <option id="-1">Select unit</option>
     </select>

   <select class="select" id="id_lease" name="lease">
    <option value="" selected="selected">---------</option>
    </select> 

    <select class="select" id="id_leaseterm" name="leaseterm">
    <option value="" selected="selected"></option>
    </select>

My problem is that when I update the dropdown id_lease it dosent have the on change call. 我的问题是,当我更新下拉列表id_lease时,它有on change调用。 (it is automatically generated from backend) (它是从后端自动生成的)

So for this reason I am adding this line with jquery line in script 因此,出于这个原因,我在脚本中将此行与jquery行一起添加

 $("#lease_id").on("change", getleaseterm());

but it gives me an error 404 that cannot find the values for "get_leaseterm" since I assume it get triggered when page is loading. 但它给我一个错误404,找不到“ get_leaseterm”的值,因为我认为它是在页面加载时触发的。 And all my script are not loading. 而且我的所有脚本都没有加载。

So problem is in this last line. 所以问题出在最后一行。 How can I solve it? 我该如何解决?

As Pointy specified removing the () helped as well I was calling wrong id 正如Pointy指出的那样,删除()也有帮助,我在输入错误的ID

final version that worked is: 起作用的最终版本是:

$("#id_lease").on("change", getleaseterm);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM