希望您可以在this fiddle中关注我。

我试图在jQuery自动完成中向我的源发送一个额外的变量。通常可以这样实现,只需在您的sourche URL之后添加变量,如下所示:source:'myURL.php?supplier=myvariable'

但是,我要发送的var是动态的,它是一个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网址

更新: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')
          }
        });
    }
});

08-25 11:53
查看更多