首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel中使用动态输入字段和多维数组完成Jquery自动操作

在Laravel中使用动态输入字段和多维数组完成Jquery自动操作
EN

Stack Overflow用户
提问于 2019-10-02 15:38:14
回答 1查看 376关注 0票数 0

我需要添加产品销售动态输入字段。该字段使用Jquery中的自动完成,稍后我希望同时获取ui.label和ui.value。

我的动态输入域代码

代码语言:javascript
运行
复制
$(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 (它使用自动完成)和数量。并在表单提交后存储到数据库中。

我的自动代码

代码语言:javascript
运行
复制
  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 存储在动态输入字段中。

我的控制器代码

代码语言:javascript
运行
复制
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;
      } 

一旦实现了这一点,我可能会问如何将输入的数组数据提取到数据库中。我觉得自己很蠢,但这个问题让我一整天都在谷歌上搜索。

EN

回答 1

Stack Overflow用户

发布于 2019-10-02 16:51:16

我找到了我的解决方案,但我不知道这是不是最好的方法。我为我的id动态输入添加了一些增量,包括:

代码语言:javascript
运行
复制
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,以便用以下方式存储数据:

代码语言:javascript
运行
复制
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:

只是需要移除

代码语言:javascript
运行
复制
$count--

在动态输入代码中,id复制消失了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58204839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档