时间:2010-12-28 15:53:02

标签: jquery button autocomplete input radio

我正在使用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
});

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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
        });
    },

希望这也有助于其他人。

答案 2 :(得分:0)

您应该在点击或更改功能中嵌入自动完成功能,这样每次选择其他单选按钮时,都会再次初始化自动完成功能:

var lang = 'en';

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


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

});