不同的自动完成功能和参数是否选中复选框

时间:2014-10-25 21:29:18

标签: jquery jquery-ui autocomplete

正确知道我正在使用两个不同的输入字段,它们与自动完成功能(Jquery UI)连接。

首先

$( "#field_1" ).autocomplete({
    source: "script_1.php",
    minLength: 3,
    autoFocus: true,
    select: function(event, ui) {
        // Do something
    },
    search: function (event, ui) { anything_a(); },
    open: function (event, ui) { anything_b(); },
    close: function (event, ui) { anything_c(); }
});

第二

$( "#field_2" ).autocomplete({
    source: "script_2.php",
    minLength: 2,
    select: function(event, ui) {
        // Do something different
    },
    open: function(event, ui) { anything(); }
});

但我需要只使用一个输入字段和一个复选框。

HTML:

<input type="text" id="just_one_field">
<input type="checkbox" id="autocomplete_checkbox">

如果在键入第一个脚本时取消选中该复选框,则会使用该参数。如果选中该复选框,则应使用第二个复选框。

JS:

$( "#just_one_field" ).autocomplete({
    source: function() {
        if ($('#autocomplete_checkbox').is(':checked')) return 'script_1.php';
        else return 'script_2.php';
    }
});

我的尝试无效。我认为语法错了......

如何将这些autocomplete() - 函数与参数结合起来实现这一目标?

2 个答案:

答案 0 :(得分:1)

您错误地使用了source中的功能。 Docs

$( "#just_one_field" ).autocomplete({
    source: function(req, resp) {
        $.ajax({
           type: 'get',
           url: ($('#autocomplete_checkbox').is(':checked') ? 'script_1.php' : 'script_2.php' ) //choose url based on checkbox
                  + '?term=' + req.term, //add "term" parameter and insert the "term" from req parameter
           success: function(data) {
               resp(data);//call resp callback with the data you got from the server
           }
        });
    }
});

答案 1 :(得分:0)

您可以通过

检查复选框是否已选中
var auto1 = $('field').autocomplete(options 1);
var auto2 = $('field').autocomplete(options 2);
var aactive;
auto1.disable();
auto2.disable();

$(document).ready(function(){

$('#checkbox').click(function{
changeAutocomplete();
});

});

function changeAutocomplete(){
if($('#checkbox').attr('checked')=='checked'){
     active = auto1;
    }else{
     active = auto2;
    }
active.enable();
}