【问题标题】:How to refresh jquery function variables on select element change如何在选择元素更改时刷新jquery函数变量
【发布时间】:2014-06-11 21:58:16
【问题描述】:

我正在尝试将选择元素的值作为参数发送到 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 元素的当前值。现在我只能让它在页面加载时发送元素的原始值并且无法更新它。

【问题讨论】:

  • 我根本不需要 $("#id_location").change(function())。这只是我尝试解决问题的一种方法,但没有成功。 $('#id_part_number').autocomplete 部分是必要的部分。
  • 是否有任何 javascript 错误?自动完成列表是否正在更新?使用ChromeFirebug 来检查ajax 请求。如果您不知道如何操作,请点击链接。
  • 完全没有错误。我正在查看正在发送的请求,它通过就好了,自动完成功能按预期填充,除了位置参数在选择更改时不会更新为新值。
  • 检查我的新答案,看看这是否有效。

标签: javascript jquery html django


【解决方案1】:

找到了答案。

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

【讨论】:

  • 这非常有效。非常感谢您的帮助和坚持。
  • 迟到的时间让我的大脑走错了路……但医生对此并不是很清楚。
猜你喜欢
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 2013-06-06
  • 2010-10-19
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多