JS自动完成 - 访问标签值

时间:2017-09-01 14:13:13

标签: javascript php jquery jquery-ui-autocomplete

我有一个显示标签的自动填充表单框,然后在选中后插入一个值。我想使用标签的一部分(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回调。

如何访问标签?

1 个答案:

答案 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()将仅返回标签字符串的最后一个元素(假设组件由' - '字符串分隔。)