如何在select元素更改时刷新jquery函数变量

时间:2014-04-26 02:07:15

标签: javascript jquery html django

我试图将select元素的值作为参数发送到ajax请求。但是,它总是会在页面加载时发送元素的初始值,而不是当前选择的值。

我尝试通过在选择框更改时重置变量来更新变量,但这对ajax请求没有任何影响。

<select id="id_location">
  <option value="1">...</option>
  <option value="2">...</option>
  <option value="3">...</option>
</select>

<script>
var list = $("#id_location").val();

$(document).ready(function() {

$("#id_location").change(function(){
    list = $("#id_location").val();
})

$('#id_part_number').autocomplete({
    serviceUrl: '/lookup',
    width: 500,
    params: {location: list},   // <-------- This variable is not updating
    onSelect: function (suggestion) {
        var request = $.ajax({
            url: "/lookup",
            type: "GET",
            data: {"query": suggestion.data,
                   },
            dataType: "json"
            });
        request.done(function(msg) {
            $("#id_number").val(msg.number);
            $("#id_desc").val(msg.description);
            $("#id_par").val(msg.par);
        })
    }
});

})
</script>

对于javascript / jquery来说,我是一个完整的新手,而且我们已经能够通过谷歌搜索得到任何东西了。任何有关解决这个问题的见解都会非常感激。

编辑:上面的自动完成功能是外部库jquery-autocomplete的一部分。它的目的是每次附加它所附加的元素时发送ajax请求,在我的情况下是输入字段。我想使用请求中的参数发送#id_location元素的当前值。现在我只能在页面加载时发送元素的原始值并且无法更新它。

1 个答案:

答案 0 :(得分:2)

找到答案。

params:{location: function(){ return $('#id_location').val()}},