2017-09-24 70 views
0

我有一个基于另一种选择从jQuery的变化是没有做什么应该做的

<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> 

而下面的控制更新链接的下拉列表中4个阿贾克斯脚本在我的形式我更新

<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> 

我的问题是,当我更新下拉id_lease它dosent有变化的呼吁。 (它会自动从后台生成)

因此,对于这个原因,我将使用jQuery行这一行脚本

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

,但它给了我一个错误404找不到值“get_leaseterm”自我假设它在页面加载时被触发。我所有的脚本都没有加载。

所以问题在于最后一行。我该如何解决它?

+2

在其他潜在的问题,“变”的处理程序的表述应该是'$ (“#lease_id”)on(“change”,getleaseterm);' - 通过包含'()'您的代码是**调用**函数并将返回值分配为事件处理程序。 – Pointy

+0

@Pointy谢谢。所以是的,它确实解决了404错误的问题。但是getleaseterm()现在根本不被触发。 –

+0

我得到了问题。这是lease_id vs id_lease。 :(。我的命名错误 –

回答

0

至于尖尖的规定去掉()帮助以及我打电话id错误

是工作的最终版本是:

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