我的 jquery 自动完成正在下拉列表中返回结果。但是当我在输入中输入一个数字时,它不会缩小结果的范围。基本上,我试图从数据库中提取多个值,例如名字、姓氏、手机和座机。自动完成应根据电话号码(手机或座机)显示结果。选择后,我希望它填充名字和姓氏字段。我怎样才能解决这个问题?这是我的 PHP:
<?php require_once('../../private/initialize.php'); ?>
<?php require_login(); ?>
<?php
global $db;
$customer = $_GET['customer'] ?? "";
$term = $_GET['term'];
$sql = "SELECT customer_name,landline,mobile,first_name,last_name FROM customer_employees ";
$sql .= "INNER JOIN customer ON customer_ref = customer_id ";
if ($customer != "" || $customer != "TRADE CASH SALES") {
$sql .= "WHERE customer_name = '" . db_escape($db,$customer) . "'";
} else {
$sql .= "WHERE landline ";
$sql .= "LIKE '%" . db_escape($db,$term) . "%'";
$sql .= "OR mobile ";
$sql .= "LIKE '%" . db_escape($db,$term) . "%'";
}
$result = mysqli_query($db,$sql);
confirm_result_set($result);
$customerArray = array();
while ($row = mysqli_fetch_assoc($result)) {
$customerArray[] = array(
'company' => $row['customer_name'],'landline' => $row['landline'],'mobile' => $row['mobile'],'fName' => $row['first_name'],'lName' => $row['last_name']
);
}
echo json_encode($customerArray);
这是我的自动完成功能:
$("#phone").autocomplete({
source: function(request,response) {
$.ajax({
url: "<?php echo url_for("/ajax/phoneField.php?customer="); ?>" + $('#customer').val(),dataType: "json",data: {
term: request.term
},success: function(data) {
var result = data
//limit the results to 5
.slice(0,5)
.map(function(item) {
//I would prefer the mobile number,but if there is none,use the landline
var phone;
if (item.mobile == "") {
phone = item.landline;
} else {
phone = item.mobile;
}
return {
label: phone + " " + item.fName + ((item.lName != "") ? ` ${item.lName}` : ""),value: phone
}
});
response(result);
}
});
},select: function(event,ui) {
var employee = ui.item.label.split(" ");
if (employee.length == 2) {
$('#fName').val(employee[1]);
$('#lName').val("");
} else if (employee.length == 3) {
$('#fName').val(employee[1]);
$('#lName').val(employee[2]);
}
$("#Street").focus();
},minLength: 0
});
附言我对这个自动完成功能很陌生,所以我可能没有以最好的方式完成它。任何建议,我都愿意接受。