我需要添加产品销售动态输入字段。该字段使用Jquery中的自动完成,稍后我希望同时获取ui.label和ui.value。
我的动态输入域代码
$(document).ready(function () {
var count = 1;
dynamic_field(count);
function dynamic_field(number) {
html = '<tr><div class="input_fields_wrap">';
html += '<td><input type="text" name="productname[]" class="form-control producttarget" id="product"/></td></div>';
html += '<td><input type="text" name="amount[]" class="form-control" /></td>';
if (number > 1) {
html += '<td><button type="button" name="remove" id="" class="btn btn-danger remove">Remove</button></td></tr>';
$('tbody').append(html);
} else {
html += '<td><button type="button" name="add" id="add" class="btn btn-success">Add</button></td></tr>';
$('tbody').html(html);
}
}
$(document).on('click', '#add', function () {
count++;
dynamic_field(count);
});
$(document).on('click', '.remove', function () {
count--;
$(this).closest("tr").remove();
});
});
我想要获取产品名称,productid (它使用自动完成)和数量。并在表单提交后存储到数据库中。
我的自动代码
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$('body').on('click', '.producttarget', function(e) {
$(this).autocomplete({
source: function( request, response ) {
// Fetch data
$.ajax({
url:"{{route('autocomplete')}}",
type: 'post',
dataType: "json",
data: {
_token: CSRF_TOKEN,
search: request.term
},
success: function( data ) {
response( data );
}
});
},
select: function (event, ui) {
$(this).val(ui.item.label); // this one worked
//this my problems.val(ui.item.value);
return false;
}
});
});
但是问题是,当我使用.onclick和目标类触发自动完成函数时,我不知道如何将 ui.value 存储在动态输入字段中。
我的控制器代码
public function search(Request $request)
{
$search = $request ->search;
$result = Product::where('productname', 'LIKE', '%'. $search. '%')->get();
$response = array();
foreach($result as $r){
$response[] = array("value"=>$r->id,"label"=>$r->productname);
}
echo json_encode($response);
exit;
}
一旦实现了这一点,我可能会问如何将输入的数组数据提取到数据库中。我觉得自己很蠢,但这个问题让我一整天都在谷歌上搜索。
发布于 2019-10-02 16:51:16
我找到了我的解决方案,但我不知道这是不是最好的方法。我为我的id动态输入添加了一些增量,包括:
html += '<td><input type="text" name="productname[]" class="form-control target product" id="productname_' + count + '"/></td>';
html += '<td><input type="text" name="productid[]" class="form-control" id="productid_' + count + '"/></td></div>';
然后搜索输入id,以便用以下方式存储数据:
var str = this.id;
var a = str.indexOf("_");
var b = str.length;
var number = str.substring(a+1, b);
$('#productid_'+nomor).val(ui.item.value);
我不知道这是不是一个奇怪的方法来实现这一点。
编辑:,我现在可以存储ui.value,但是当我添加和删除输入字段时。身份证乱七八糟。输入字段有重复的id。因此,我想我需要找到行计数,并将其附加到id中。
编辑2:
只是需要移除
$count--
在动态输入代码中,id复制消失了。
https://stackoverflow.com/questions/58204839
复制相似问题