动态添加的输入值未在Php

时间:2017-08-03 22:20:45

标签: javascript php jquery html laravel

我有一个表单,我使用jquery动态添加输入字段,然后使用Laravel Php提交该表单的值

我的HTML:

<div class="input_fields_wrap">
  <button class="add_field_button">Add More Fields</button>
  <div>
    <input type="text" name="mytext[]">
  </div>
</div>

我的剧本:

<script type="">
$(document).ready(function() {
  var max_fields      = 10; //maximum input boxes allowed
  var wrapper         = $(".input_fields_wrap"); //Fields wrapper
  var add_button      = $(".add_field_button"); //Add button ID

  var x = 1; //initlal text box count
  $(add_button).click(function(e){ //on add input button click
    e.preventDefault();
    if(x < max_fields){ //max input box allowed
      x++; //text box increment
      $(wrapper).append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
    }
  });

  $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
    e.preventDefault(); $(this).parent('div').remove(); x--;
  })
});
</script>

问题在于,当我提交输入框中输入的值并尝试使用以下Laravel代码捕获它们时。

$mytext =Request::get('mytext');
dd($mytext);

无论我添加多少文本输入,都只捕获html中定义的输入的第一个值。

输出:

array:1 [▼
  0 => "Text box 1"
]

我该如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:2)

您可以为添加的每个输入添加不同的名称。

您的HTML:

<input type="text" name="mytext[text]">

你的JS:

var x = 1; //initlal text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
        if(x < max_fields){ //max input box allowed
            $(wrapper).append('<div><input type="text" name="mytext[text'+  x++  +']"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
       }
});

输出结果为:

"mytext" => array:4 [▼
   "text" => "Text"
   "text1" => "Text1"
   "text2" => "Text2"
   "text3" => "Text3"
]

希望这有帮助!

答案 1 :(得分:1)

您已经有一个变量来计算附加的输入...
使用它!

注意name="mytext'+x+'"

$(wrapper).append('<div><input type="text" name="mytext'+x+'"/><a href="#" class="remove_field">Remove</a></div>');

还发送了x以了解发送的数量。