0

我已经在文本框中编写了自动完成代码。我的问题是如何根据自动完成选择为禁用的文本框分配值。我有两个实体产品名称和产品价格。产品名称已自动完成。产品价格应根据自动完成选择动态变化。

<tr>
  <td class="header" align="left" valign="top">
   Enter the product<span class="required">*</span>
  </td>
  <td>
   <input class="text" type="text" name="product" id="tag" value="" align="left"  size="75" maxlength="80">
  </td>
  <td class="header" align="left" valign="top">
    price
 </td><td>
   <input class="text" disabled type="text" name="price"  value="" align="left" size="75" maxlength="80">
 </td>
 </tr>

Jquery Autocomplete(autocomplete.php 回显我的产品的值说 xyz abc def )

<script>
 $(document).ready(function(){
 $("#tag").autocomplete("autocomplete.php", {
    selectFirst: true
 });
});
 </script>

我应该将我的 autocomplete.php 回显为 xyz 100 abc 212 def 200 吗?任何帮助将不胜感激

4

2 回答 2

0

您需要使用选择功能。

$("#tag").autocomplete("autocomplete.php", {
    source: "your link to the json feed here",
    selectFirst: true
    select: function( event, ui ) {
       $( "#element_needs_editing" ).val(ui.item.value);
       return false;
    }
 });

此外,您需要编辑您的 autocomplete.php 为 json 格式。有了一个value字段,它可能会保存文本或 id 或其他东西。使用数组,您可以将多个变量发送到首页。最好的是将结果加载到数组中并使用json_encode($array);

您的搜索输出需要采用 json 格式。实现这一点的最佳方法是将所有搜索结果值加载到一个数组中并通过 json_encode 发送。

<?php
//A simple array
$data = array();
$data[0]['value'] = 1;
$data[0]['item_code'] = "A001";
$data[0]['price'] = 15;
$data[1]['value'] = 2;
$data[1]['item_code'] = "A002";
$data[1]['price'] = 20;
echo json_encode($data);
?>

以上将导致jquery将使用的以下输出。

[{"value":1,"item_code":"A001","price":15},{"value":2,"item_code":"A002","price":20}]

现在,如果您想参考“项目代码”,您只需参考

$( "#element_with_item_code" ).val(ui.item.item_code);

或价格

$( "#element_with_price" ).val(ui.item.price);
于 2013-11-12T08:08:11.477 回答
0

尝试这样的事情

        $(document).ready(function(){
             $("#tag").autocomplete("autocomplete.php", {
                selectFirst: true,
                select: function( event, ui ) {
                    if(ui.item){
                        document.getElementsByName('price')[0].value = ui.item.value
                    }
                }
             });
        })
于 2013-11-12T08:08:18.253 回答