我有一个显示标签的自动填充表单框,然后在选中后插入一个值。我想使用标签的一部分(client_id)在提交后形成表单的一部分。
JS:
<script type="text/javascript">
$(function() {
$( "#clientsearch" ).autocomplete({
source: 'backend_search_addressWT.php',
minLength: 2,
select: function (event, ui) {
return showUser(ui.item.value)
},
change: function (event, ui) {
return showUser(ui.item.value);
},
});
});
</script>
backend_search_addressWT.php
<?php
require_once 'config.php';
//get search term
$searchTerm = $_GET['term'];
//get matched data from skills table
$query = $mysqli->query("SELECT * FROM client WHERE client_address LIKE '%".$searchTerm."%'");
while ($row = $query->fetch_assoc()) {
$data[] = array (
'label' => $row['client_address'].' - '.$row['client_name'].' - '.$row['client_id'],
'value' => $row['client_address'],
'value2' => $row['client_id'],
);
}
//return json data
echo json_encode($data);
?>
我尝试将其添加到js中,但无济于事:
<script type="text/javascript">
$(function() {
$( "#clientsearch" ).autocomplete({
source: 'backend_search_addressWT.php',
minLength: 2,
select: function (event, ui) {
return showUser(ui.item.value);
var label = (ui.item.label).split('-')
var client_id = label[2]
$('#hiddenID').client_id
},
change: function (event, ui) {
return showUser(ui.item.value);
},
});
});
</script>
请注意,我已经对值ui使用了一个select回调。
如何访问标签?
答案 0 :(得分:1)
在select()
方法中,您在return
语句后添加了代码:
select: function (event, ui) {
return showUser(ui.item.value);
var label = (ui.item.label).split('-')
var client_id = label[2]
$('#hiddenID').client_id
}
这些行永远不会被执行。
您希望$('#hiddenID').client_id
为您做什么?这很可能一无所获,因为它会查找jquery元素的一个(可能不存在)属性,然后再将其丢弃。
相反(已编辑):
在返回语句之前放置标签处理指令,看看会发生什么。也许首先在控制台中首先显示标签,然后将其放入隐藏的输入字段:
select: function (event, ui) {
console.log(ui.item.label); // just to make sure there is something to process ...
$('#hiddenID').val(ui.item.label.split(' - ').pop()); // to place the last portion
// of the label in that hidden element (assuming it is an input field)
return showUser(ui.item.value);
}
.split(' - ').pop()
将仅返回标签字符串的最后一个元素(假设组件由' - '
字符串分隔。)