我想在自动填充字段中选择一个值(" 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)))
答案 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定义label
和value
属性。您也可以定义自己的属性,因此如果您也创建了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);