从自动填充中填充文本字段

时间:2014-02-27 11:55:43

标签: jquery autocomplete

我想在自动填充字段中选择一个值(" Name")时填充一个字段(" Number")。请参阅更新 Link

我们说我有两组数据。第1组包含名称并设置2 - 数字。它们是相关的,如:   名称A = 0001

姓名B = 0002

姓名C = 0003等

<div>
<table>
    <div id="Q101" class="printable">
        <tr>
            <td width="41" align="left" valign="top">
                <div class="QNumber">1.1</div>
            </td>
            <td align="left" valign="baseline">
                <div class="QText">Name:</div>
            </td>
            <td width="300">
                <div class="Response">
                    <input name="Text" type="text" id="vslName" size="31">
                </div>
            </td>
        </tr>
    </div>

        <div id="Q102">
        <tr>
            <td width="41" align="left" valign="top">
                <div class="QNumber">1.2</div>
            </td>
            <td align="left" valign="baseline">
                <div class="QText">Number:</div>
            </td>
            <td width="300">
                <div class="Response">
                    <input name="Text" type="text" id="Q101" size="10">
                </div>
            </td>
            < </tr>
    </div>
</table>
</div>

我想要的是当用户从自动填充字段中选择NAME(id =&#34; vslName&#34;)时,数字会自动填充到提交的IMO NUMBER(id =&#34; Q101&#34;) 。另一个问题 - 在哪里放置NUMBERS?我在函数中保留了自动完成值,因为最多会有50个条目。因此:

$(function() {
    var availableTags = [
      "AZOV SEA",
      "BARENTS SEA",
      "KARA SEA",
      "EAST SIBERIAN SEA",
      "TUCHKOV BRIDGE",
    ];
    $( "#vslName" ).autocomplete({
      source: availableTags
    });
  });

提前谢谢! PS。我不是JS的专业人士,因此请原谅我的法语&#34;如果这对你们来说是一件小事)))))) PS.2 - 在上面的代码中输入=&#34; text&#34;可能是&#34;数字&#34; - 并不重要atm)))

1 个答案:

答案 0 :(得分:1)

为什么不使用jQuery UI's autocomplete

编辑:如果您正在使用jQuery UI的自动完成,那么您需要绑定到select事件来处理它。有关详细信息,请参阅http://api.jqueryui.com/autocomplete/#event-select

这样的事情可以解决问题:

$("#vslName").autocomplete({
    source: availableTags,
    select: function (event, ui) {
        var tag = ui.item.value;
        $('input#Q101').val(availableTags.indexOf(tag) + 1);
    }
});

我不是百分之百确定这是否有效,但基本思路是在select事件中,您获得所选标签的值,然后将输入值设置为该标签中包含的文本

编辑:正如我在评论中提到的,JavaScript缺少像哈希或词典这样的结构,这是实现这一目标的明显方法,但它可以伪造。

首先,您的数组需要是一个对象数组,而不仅仅是一个字符串数组。您需要为jQuery UI定义labelvalue属性。您也可以定义自己的属性,因此如果您也创建了number属性,那应该可以完成这项工作。

这样的东西是合适的:

var availableTags = Array;
availableTags[0] = { "name": "AZOV SEA", "value": "AZOV SEA", "number": 0 };

对每个剩余标记重复availableTags行,每次递增数字。然后,您可以使用$.grep方法获取所选标记的数字属性,如下所示:

var tag = ui.item.value;
var item = $.grep(availableTags, function (e) { return e.name == tag; });
$('input#Q101').val(item[0].number);