我使用jquery.autocomplete按代码搜索项目并自动完成代码并更新以前名为name的表单输入字段:
<tr>
<td><input type="text" name="Name[]" class="nameautoc" value="badname1" /></td>
<td><input type="text" name="Code[]" class="codeautoc" value="1234" /></td>
</tr>
<tr>
<td><input type="text" name="Name[]" class="nameautoc" value="ok_name" /></td>
<td><input type="text" name="Code[]" class="codeautoc" value="12345" /></td>
</tr>
<tr>
<td><input type="text" name="Name[]" class="nameautoc" value="badname2" /></td>
<td><input type="text" name="Code[]" class="codeautoc" value="34567" /></td>
</tr>
对于每个代码输入字段,代码本身的自动填充功能正常。 当添加JS代码以更新匹配的Name字段时,它会更新整个表单Name字段,而不是之前的/或当前正在处理的字段。
如何实现只有当前输入名称字段由我选择的代码自动完成,或者我应该使用JS代码参考我使用的表格?
JS代码:
$(document).ready(function($) {
$(".codeautoc").autocomplete({
source:"codenName.php",
minLength:2,
select:function(event,ui){
var item=ui.item;
if(item){
$(".nameautoc").val(item.name);
}
}
});
相关的PHP代码:
while($row = mysql_fetch_array($fetch,MYSQL_ASSOC)) {
$return_row['label'] = $row['code'];
$return_row['value'] = $row['code'];
$return_row['name'] = $row['name'];
array_push($return_arr, $return_row);
}
希望我提供了所需的信息。
谢谢!
答案 0 :(得分:1)
您的select
回调应如下所示:
select:function(event,ui){
var item=ui.item;
if(item){
$(".nameautoc", $(this).parents('tr')).val(item.name);
}
}
通过在jquery选择器中添加$(this).parents('tr')
作为上下文(有关详细信息,请参阅JQuery docs),确保只有父tr
元素的匹配子元素是已更新,而不是文档中包含类nameautoc
的所有元素。
或者,您也可以使用$(this).parent().parent()
遍历tr
,而不是使用$(this).parents('tr')
。 Here's the working fiddle.