我有点卡住并在stackoverflow上浏览了许多页面以找到解决方案。
我有一个发票表,您可以在其中动态添加带有输入字段的新 TR。这工作正常,但在第一个和第二个输入字段上。
第一个自动完成输入字段基于客户 ID。但是,第二个自动完成是基于第一个自动完成选择的值,它将一个值添加到隐藏的输入字段(一个 ID)。
第二个自动完成工作正常,但我必须在表的前一个 TD 中获取最后一个隐藏输入字段的值。
每个 TR 行的类是 class=".item-row"。第二个自动完成位于表的第二个 TD 中。
我使用以下脚本:
// Use the .autocomplete() method to compile the list based on input from user
$(".articleName").autocomplete({
source: function(request, response) {
var $itemrow = $(this).closest('tr');
$.ajax({
url: "getproducts-test.php",
dataType: "json",
data: {
term: request.term,
staffid: $itemrow.find('#debiteuren_staffmembers_id').val()
},
success: function(data) {
response(data);
}
});
},
select: function(event, ui) {
var $itemrow = $(this).closest('tr');
// Populate the input fields from the returned values
$itemrow.find('#articleName').val(ui.item.articleName);
$itemrow.find('#articleSize').val(ui.item.articleDescription);
$itemrow.find('#articlePrice').val(ui.item.articlePrice);
// Give focus to the next input field to recieve input from user
$('#articleQty').focus();
return false;
}
// Format the list menu output of the autocomplete
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.articleName + " - " + item.articleDescription + "</a>" )
.appendTo( ul );
};
您可以在哪里看到我需要 ID 才能获得返回的正确值。这是行不通的:
staffid: $itemrow.find('#debiteuren_staffmembers_id').val()
这是 HTML 例如:
<tr class="item-row">
<td>
<textarea name="debiteuren_staffmembers[]" id="debiteuren_staffmembers"></textarea>
<input type="hidden" name="debiteuren_staffmembers_id[]" id="debiteuren_staffmembers_id" value="2">
</td>
<td>
<textarea name="articleName[]" id="articleName"></textarea>
</td>
</tr>
例如,如果我更改代码以获取人员编号:
staffid: $('#debiteuren_staffmembers_id').val()
它可以工作,但它只会从表中的第一行获取第一个隐藏输入的值,我需要来自使用自动完成功能的当前行的输入。
如果有人能发光,将不胜感激。谢谢你们。