0

我正在为文本输入元素使用 jQuery 自动完成脚本,但问题是源 URI 中的 lang 变量在更新变量时不会更新。

每当我单击单选输入元素时,都会更新 lang 的值,然后在文本输入元素中输入一些内容,然后触发自动完成代码。奇怪的是,它总是使用“en”值而不是更新的值。

有谁知道我的代码的更好方法或修复?

代码:

var lang = 'en';

$('input[name="language"]').click(function()
{
    lang= $(this).val();
});

$("#query").autocomplete({
    source: "domain.com/suggest.php?language=" + lang,
    minLength: 1
});
4

3 回答 3

1

click 事件发生在您单击选择时,而不是在您更改值时。所以 lang 可能被重新分配给选择的当前值,如果它是英语,它在更改选择值后将保持英语。你可能的意思是:

$('input[name="language"]').change(function()
{
    lang= $(this).val();
});
于 2010-12-28T15:56:33.263 回答
1

解决方案是创建自定义 AJAX 调用:

    source: function(request, response)
    {
        $.ajax({
            url: 'domain.com/suggest.php',
            dataType: "json",
            data: {language: $('input[name="language"]:checked').val(), term: $('#query').val()},
            success: response
        });
    },

希望这对其他人也有帮助。

于 2010-12-29T12:15:54.100 回答
0

您应该在 click 或 change 函数中嵌入自动完成功能,以便每次选择不同的单选按钮时,自动完成功能都会再次初始化:

var lang = 'en';

$('input[name="language"]').click(function()
{
    lang= $(this).val();


$("#query").autocomplete({
    source: "domain.com/suggest.php?language=" + lang,
    minLength: 1
});

});
于 2013-11-07T14:08:58.180 回答