Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 激活从下拉列表中选择选项的功能_Javascript_Jquery - Fatal编程技术网

Javascript 激活从下拉列表中选择选项的功能

Javascript 激活从下拉列表中选择选项的功能,javascript,jquery,Javascript,Jquery,我设计了一个自动完成功能,当一个人在一个文本框中输入至少3个字母时,它将通过几个火车站数据库中的一个来查找所有可能包含这三个(或更多)字母的车站 该功能运行良好,打开网页时,自动完成列表会显示正确的电台 但是,用于生成自动完成建议的数据库的选择是基于用户输入到页面上的droplist中 目前,所使用的数据库是基于页面加载时选择的选项(因此是顶部选项),我似乎无法让它随着用户输入的更改而更改 以下是代码的问题部分: $(function () { for(i=0;i<30;i++)

我设计了一个自动完成功能,当一个人在一个文本框中输入至少3个字母时,它将通过几个火车站数据库中的一个来查找所有可能包含这三个(或更多)字母的车站

该功能运行良好,打开网页时,自动完成列表会显示正确的电台

但是,用于生成自动完成建议的数据库的选择是基于用户输入到页面上的droplist中

目前,所使用的数据库是基于页面加载时选择的选项(因此是顶部选项),我似乎无法让它随着用户输入的更改而更改

以下是代码的问题部分:

$(function () {

    for(i=0;i<30;i++){
        $("#_Q6_Q" + i + "_Q3_C").change(function(){
            transportChange($("#_Q6_Q" + i +"_Q3_C").val(), i)
        });
    };
}
我可以告诉您,‘lst’参数被连接到一个链接中,然后该链接定义将使用哪个数据库


自动完成函数来自JQuery。

忽略第一个for循环中缺少的
var
(从技术上讲,它将
i
置于全局范围内),以及对30选择框上的更改事件应用回调函数的事实(正确吗?!)

看起来问题(至少是第一部分)在于回调共享相同的执行范围。这意味着在所有函数中,
i
始终等于最后分配的值(30)

对这种行为的解释比我在这里所能做的要好得多:

所以。。。请按如下方式更新您的第一个代码块:

$(function(){

    for(var i=0; i<30; i++){
        $("#_Q6_Q"+ i +"_Q3_C").change(callbackFactory(i));
    }

    function callbackFactory(i){
        return function(){
            transportChange($("#_Q6_Q"+ i +"_Q3_C").val(), i);
        };
    }
    // ...
});
$(函数(){

对于(var i=0;我如何使用jquery插件?我怀疑我是否能够将其输入到网页-工作政治。-以扩展并不迷惑任何人。我的公司做了很多实质上是美化的网页设计,但我们必须使用特定的模板。只有当客户要求我们超越时,我们才能做一些更奢侈的事情。谢谢你今晚帮了我很多忙!我不得不离开工作,所以我回来后会更新,但这很有意义。至于选择框,是的,有30个选择框,每个与3个文本框关联(这是调用自动完成功能的地方)选择框包含传输类型,因此定义了需要使用的数据库。我将在明天更新它是否有效。更改有效,现在数据库正在加载。虽然自动完成功能本身似乎已损坏,可能是由于再次关闭,但我不确定。
$(function(){

    for(var i=0; i<30; i++){
        $("#_Q6_Q"+ i +"_Q3_C").change(callbackFactory(i));
    }

    function callbackFactory(i){
        return function(){
            transportChange($("#_Q6_Q"+ i +"_Q3_C").val(), i);
        };
    }
    // ...
});