我試圖創建一個搜索框,基本上會自動完成根據用戶輸入從JSON文件中的鍵值對。它看起來像使用datalist可能是最好的選擇,但是當我執行下面的代碼時,沒有選項標籤出現在HTML中。通過遍歷JSON文件填充datalist選項
我對jquery和json仍然很陌生,所以我很樂於接受建議。
這是json。該列表包含1450項,如果這是相關的:
{ "osCars": [
{ "id": 1,
"name": "Cadillac",
"type": "Sedan",
"desc": "A fine American automobile"
},
{ "id": 2,
"name": "BWM",
"type": "Sedan",
"desc": "A fine German automobile"
},
{ "id": 3,
"name": "Lexus",
"type": "Sedan",
"desc": "A fine Japanese automobile"
}
]}
這裏的HTML:
<input type="text" maxlength="30" list="carList" id="carSearchBox" name="carSearchBox" pattern="[A-Za-z '-]*$" placeholder="search cars" autofocus autocomplete="on">
<datalist id="carList"></datalist>
<script src="js/main.js"></script>
<script>window.onload=getCars;</script>
而這裏的JavaScript/jQuery的:
function getCars() {
var url, carOption;
url = 'js/cars.json';
$.getJSON(url, function(data) {
//populate the cars datalist
$(data.osCars).each(function() {
carsOption = "<option value=\"" + this.id + "\">" + this.name + "</option>";
$('#carList').append(carsOption);
});
});
}
嗯,我試着將this.id改成this.name,但它沒有任何效果(我也使用Chrome)。我看着你創建的小提琴,但它似乎不起作用,我不確定我們是在同一頁上關於我想要實現的。我正在尋找動態創建的選項標籤以在數據列表標籤之間出現。這是發生在你的小提琴嗎?它似乎不適合我。 ID並非嚴格意義上的......我只是更喜歡在後來搜索外部json文件時使用這些字符串。 – pr0t0