正确知道我正在使用两个不同的输入字段,它们与自动完成功能(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() - 函数与参数结合起来实现这一目标?
答案 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();
}