我有一个表单,我使用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"
]
我该如何解决这个问题?感谢
答案 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
以了解发送的数量。