无法将自动完成选择的值推送到 JavaScript 中的全局数组
Cant push autocomplete selected value to global array in JavaScript
我正在处理一个自动完成用户列表的项目。
当我尝试将自动完成 selected 值推送到全局数组时,当我在自动完成功能之外执行 console.info(usernames) 时,我得到一个空列表。
var usernames=[];
$(document).ready(function(){
$(function(){
$( "#users" ).autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: "getUserFromDb.php",
dataType: "json",
data: {
term: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function(event,ui){
usernames.push(ui.item.value);
}
});
console.info(usernames);
});
});
自动完成源返回正确的列表,select 也能正常工作,因为如果我在自动完成 select 中执行 console.info(usernames):当我 selecting 不同的值。
既然您需要 "answer",我们开始吧。首先,一旦 DOM 准备就绪,您的 console.info
就会有 运行,当您从自动完成中选择 select 选项时,显然是空的,因为稍后会推入用户名。其次,您不会在填充时重新记录 usernames
。所以,你有两个选择。
1)在select函数内记录usernames
,如:
select: function(event,ui) {
usernames.push(ui.item.value);
console.info(usernames);
}
2) 有一个函数可以为您完成这项工作,例如:
select: function(event,ui) {
usernames.push(ui.item.value);
showMeUserNames();
}
function showMeUserNames() {
console.info(usernames);
}
所以,你的代码可能会变成:
var usernames=[];
$(function(){
$( "#users" ).autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: "getUserFromDb.php",
dataType: "json",
data: {
term: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function(event,ui) {
usernames.push(ui.item.value);
console.info(usernames);
// OR
// showMeUserNames();
}
});
});
function showMeUserNames() {
console.info(usernames);
}
我正在处理一个自动完成用户列表的项目。
当我尝试将自动完成 selected 值推送到全局数组时,当我在自动完成功能之外执行 console.info(usernames) 时,我得到一个空列表。
var usernames=[];
$(document).ready(function(){
$(function(){
$( "#users" ).autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: "getUserFromDb.php",
dataType: "json",
data: {
term: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function(event,ui){
usernames.push(ui.item.value);
}
});
console.info(usernames);
});
});
自动完成源返回正确的列表,select 也能正常工作,因为如果我在自动完成 select 中执行 console.info(usernames):当我 selecting 不同的值。
既然您需要 "answer",我们开始吧。首先,一旦 DOM 准备就绪,您的 console.info
就会有 运行,当您从自动完成中选择 select 选项时,显然是空的,因为稍后会推入用户名。其次,您不会在填充时重新记录 usernames
。所以,你有两个选择。
1)在select函数内记录usernames
,如:
select: function(event,ui) {
usernames.push(ui.item.value);
console.info(usernames);
}
2) 有一个函数可以为您完成这项工作,例如:
select: function(event,ui) {
usernames.push(ui.item.value);
showMeUserNames();
}
function showMeUserNames() {
console.info(usernames);
}
所以,你的代码可能会变成:
var usernames=[];
$(function(){
$( "#users" ).autocomplete({
source: function( request, response ) {
$.ajax({
type: "GET",
url: "getUserFromDb.php",
dataType: "json",
data: {
term: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 2,
select: function(event,ui) {
usernames.push(ui.item.value);
console.info(usernames);
// OR
// showMeUserNames();
}
});
});
function showMeUserNames() {
console.info(usernames);
}