jQuery 自动完成源参数不更新

发布于 2024-10-09 10:44:32 字数 429 浏览 2 评论 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
});

I'm using the jQuery autocomplete script for a text input element but the problem is that the lang variable in the source URI doesn't update when the variable is updated.

The value of lang is updated whenever I click on a radio input element and after that I type something in the text input element which then trigger the autocomplete code. Strangely enough it always uses the "en" value and not the updated value.

Does anyone know a better approach or a fix for my code?

code:

var lang = 'en';

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

霊感 2024-10-16 10:44:32

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

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

The click event occurs when you click on the select, not when you change values. So lang is probably getting reassigned to the current value of the select, which if it's english it will remain english after having changed the select value. What you probably mean to do is:

$('input[name="language"]').change(function()
{
    lang= $(this).val();
});
完美的未来在梦里 2024-10-16 10:44:32

解决方案是创建自定义 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
        });
    },

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

The solution is to a create custom AJAX call:

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

Hope this helps others too.

尴尬癌患者 2024-10-16 10:44:32

您应该将自动完成功能嵌入到单击或更改功能中,以便每次选择不同的单选按钮时,自动完成功能都会再次初始化:

var lang = 'en';

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


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

});

You should embed the autocomplete function inside the click or change function so that each time you select a different radio button, the autocomplete is initialized again:

var lang = 'en';

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


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

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文