javascript - 如何使用动态变量更改自动完成的源?

标签 javascript jquery autocomplete

希望大家可以关注this fiddle

我正在尝试在 jquery 自动完成中向我的源发送一个额外的变量。这通常可以通过在源 URL 之后添加变量来实现,如下所示: source:'myURL.php?supplier=myvariable'

我尝试发送的变量是动态的,它是一个 true 或 false 的变量,具体取决于选中或未选中的复选框。就像这样:

var dynamicVar = $('#y').prop('checked');

$('#y').change(function(){
    dynamicVar = $('#y').prop('checked');
    console.log(dynamicVar);
});

现在我尝试在源代码中使用此变量进行自动完成,如下所示:

source:'myURL.php?supplier='+dynamicVar

正如您在 my fiddle 中看到的那样(如果您在控制台中查找 GET URL),无论是否选中该复选框,此变量始终为 false。

如何编辑代码,以便演示中请求的 URL 为http://fiddle.jshell.net/DLLVw/482/show/myURL.php?supplier=false&term=whatItyped当取消选中该复选框时,http://fiddle.jshell.net/DLLVw/482/show/myURL.php?supplier=true&term=whatItyped 当选中该复选框时?

附注在输入字段中输入以查看 GET url

更新:artm 的代码返回正确的内容,但这会破坏输入的自动完成功能。

原始非虚拟代码:

jQuery:

var dynamicVar = $('#zxc').prop('checked');

$('#zxc').change(function(){
    dynamicVar = $('#zxc').prop('checked');
    dynamicVar = $('#zxc').is(':checked');
    console.log(dynamicVar);
});

function getChecked(){
    return $('#zxc').is(':checked');
}
$('#q').autocomplete({
    source: function(request, response) {
        $.ajax({
          url: "getklanten.php",
          data: {
            term : request.term,
            supplier : $('#zxc').is(':checked')
          }
        });
    }
})  .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li>" )
    .append( "<a>" + item.naam + "</a>" )
    .appendTo( ul );
};

控制台响应:

 [{"naam":"Company name","id":12345}]

最佳答案

参见http://jsfiddle.net/DLLVw/483/

当您将dynamicVar传递给自动完成功能时,它会使用您调用autoComplete时的dynamicVar值。因此,无论状态如何,它总是错误的,因为当您更改复选框时,dynamicVar 不会更改。如果你想传递动态值,你需要使用:

$('#x').autocomplete({
    //source:'myURL.php?supplier='+dynamicVar
    source: function(request, response) {
        $.ajax({
         url: "myURL.php",
         data: {
            term : request.term,
            supplier : $('#y').is(':checked')
          }
        });
    }
});

关于javascript - 如何使用动态变量更改自动完成的源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383256/

相关文章:

javascript - 抽象 jQuery

javascript - 在进行任何基于键盘的操作后, Angular Material (日期选择器)焦点将放在 body 上

JavaScript 在同一循环中每 x 次迭代循环?

javascript - .push 不是函数,使用 Javascript 和 localstorage

javascript - 使用 "jQuery Form Plugin"手动发送拖放文件

javascript - 使用处理程序进行 JQuery 自动完成

javascript - 提交时的 jQuery 不起作用

jQuery 窗口大小

bash 别名不自动完成与别名相同

jquery - 使用knockout js在Jquery中自动完成