AMe*_*Meh 3 javascript ajax jquery autocomplete materialize
我正在ASP.Net MVC应用程序中使用实现ui,我正在使用动态数据的自动完成控件.
这是我的代码,
<div class="row">
<div class="col s12">
<div class="row">
<div class="input-field col s12">
<i class="material-icons prefix">textsms</i>
<input type="text" id="autocomplete-input" class="autocomplete">
<label for="autocomplete-input">Autocomplete</label>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是jquery ajax调用,
$(function () {
$.ajax({
type: 'GET', // your request type
url: "/Home/GetData/",
success: function (response) {
var myArray = $.parseJSON(response);
debugger;
$('input.autocomplete').autocomplete({
data: {
"Arizona (1)": null,
"Florida (2)": null,
"Georgia (3)": null,
"Hawaii(4)": null,
"Idaho (5)": null,
"Illinois (6)": null
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
它只能以这种格式接受数据,这是我的回复,
"[["Arizona (1)"],["Florida (2)"],["Georgia (3)"],["Hawaii (4)"],["Idaho (5)"],["Illinois (6)"]]"
Run Code Online (Sandbox Code Playgroud)
如何将我的响应转换为自动完成理解的格式?
小智 20
使用ajax API调用materializecss输入自动完成
我已修改如下以获取国家/地区的自动完成输入.
您可以从API https://restcountries.eu/rest/v2/all?fields=name获取国家/地区名称列表
$(document).ready(function() {
//Autocomplete
$(function() {
$.ajax({
type: 'GET',
url: 'https://restcountries.eu/rest/v2/all?fields=name',
success: function(response) {
var countryArray = response;
var dataCountry = {};
for (var i = 0; i < countryArray.length; i++) {
//console.log(countryArray[i].name);
dataCountry[countryArray[i].name] = countryArray[i].flag; //countryArray[i].flag or null
}
$('input.autocomplete').autocomplete({
data: dataCountry,
limit: 5, // The max amount of results that can be shown at once. Default: Infinity.
});
}
});
});
});Run Code Online (Sandbox Code Playgroud)
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.2/css/materialize.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.2/js/materialize.min.js"></script>
<div class="row">
<div class="col s12">
<div class="row">
<div class="input-field col s12">
<label for="country">Autocomplete</label>
<input type="text" id="country" class="autocomplete">
</div>
</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
小智 5
再会。我可以建议一些不同的方法。实现自动完成有方法
更新数据
所以如果我们想让ajax加载数据,我们可以在输入字段中添加事件监听器
$(".autocomplete").each(function () {
let self = this;
$(this).autocomplete();
$(this).on("input change", function () {
$.ajax({
url: '/source/to/server/data',
type: 'post',
cache: false,
data: {"some": "data"},
success: function (data) {
data = JSON.parse(data);
$(self).autocomplete("updateData", data/*should be object*/);
},
error: function (err) {
console.log(err);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
对于不同的数据源并不理想,但可能是一个起点。
不是很花哨,但尝试一下:
$(function () {
$.ajax({
type: 'GET', // your request type
url: "/Home/GetData/",
success: function (response) {
var myArray = $.parseJSON(response);
var dataAC = {};
for(var i=0;i<myArray[0].length;i++){
eval("dataAC." + myArray[0][i] + " = null;");
}
debugger;
$('input.autocomplete').autocomplete({
data: dataAC
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21543 次 |
| 最近记录: |