我創建了一個類似於SO的標籤的自動填充。jQuery自動完成輸入驗證凍結
它從我的數據庫抓取數據,並將數據作爲以逗號分隔的標記插入表單域。
eg. PHP, JS, SO, Laravel
我想讓它在第四個逗號後停下來,這樣用戶最多可以輸入4個標籤。
不幸的是有一個問題。輸入字段在第4個標籤後凍結。用戶無法刪除或編輯標籤。
我不知道是什麼問題。
<script>
$(function() {
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#themeti")
.keypress(function (e) {
var input = $(this).val()+String.fromCharCode(e.which);
if (input.split(',').length > 4) {
e.preventDefault();
}
})
.autocomplete({
source: function(request, response) {
$.getJSON("../../assets/php/themedata.php", {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
你錯過了「String.fromCharCode(e.which)」 – Vinod