每当我输入自动填充字段时,都会发送一个ajax请求,并且我没有编写任何代码来执行此操作。检查控制台我看到它是对控制器的400 GET请求,该控制器加载了该视图,并在URL上附加了param(json)。我绝对难过。
<head>
<script data-main="<?=base_url()?>public/requirejs/main.js" src="<?=base_url()?>public/requirejs/require-jquery.js"></script>
<script>
requirejs(['a_mod'],
function(a_mod) {
$(document).ready(function() {
var param = [];
param = $('#elem').attr('value');
a_mod.foo(param, "#someElem");
});
});
<script>
main.js
require(["jquery",
"jquery-ui"],
function() {
}
);
自动完成功能
'foo' : function(param, elementAutocomplete, elementTags) {
console.log("init ac");
$(elementAutocomplete).autocomplete({
source: param,
minLength: 1,
select: function (event, ui) {
event.preventDefault();
//
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $("<li></li>")
.data( "item.autocomplete", item )
.append( '<a>' + item.label + '</a>' )
.appendTo(ul);
}
},
答案 0 :(得分:2)
自动填充程序的source
属性是一个字符串:
param = $('#elem').attr('value');
string source
means它是一个网址:
只需指定源选项,即可自定义自动完成功能以使用各种数据源。数据源可以是:
- 包含本地数据的数组
- 一个String,指定一个URL
- a Callback
说var param = [];
只是意味着param
被初始化为空数组,并不意味着param
将始终是一个数组。您需要将param
值修复为数组。