在laravel中使用javascript进行foreach循环
Posted
技术标签:
【中文标题】在laravel中使用javascript进行foreach循环【英文标题】:foreach looping with javascript in laravel 【发布时间】:2020-06-17 14:26:30 【问题描述】:请帮帮我
如何在javascript中输入sql数据库
<table >
<tbody class="input_fields_Pesanan">
<tr>
<td style="width: 15%;" align="center"><b>Kode BMN</b></td>
<td style="width: 15%;" align="center"><b>Nama Barang</b></td>
<td style="width: 15%;" align="center"><b>Kuantitas</b></td>
<td style="width: 15%;" align="center"><b>Satuan Ukuran</b></td>
<td style="width: 2%;"></td>
<tr>
<td><select type="text" style="width: 100%;" class="form-control select2" id="kode_bmn" name="kode_bmn" data-placeholder="--Pilih Kode BMN--">
<option></option>
@foreach($bmn as $b)
<option>$b->kode_bmn-$b->nama_bmn</option>
@endforeach
</select></td>
<td><input type="text" class="form-control " id="jenis_barang" name="jenis_barang" ></td>
<td><input type="number" min="1" class="form-control" id="kuantitas" name="kuantitas"></td>
<td><select type="text" style="width: 100%;" class="form-control select2" id="satuan_ukuran" name="satuan_ukuran" data-placeholder="--Pilih Satuan Ukuran--">
<option></option>
<option>m</option>
<option>unit</option>
<option>kg</option>
</select></td>
<td> <button class="add_field_pesanan" title="Tambah Field Pesanan"><i class="fas fa-plus"></i></button></td>
</tr>
<!-- <tr><td><select type="text" style="width: 100%;" class="form-control select2" id="kode_bmn" name="kode_bmn" data-placeholder="--Pilih Kode BMN--"><option></option>@foreach($bmn as $b)<option>$b->kode_bmn-$b->nama_bmn</option>@endforeach</select></td><td><input type="text" class="form-control " id="jenis_barang" name="jenis_barang" ></td><td><input type="number" min="1" class="form-control" id="kuantitas" name="kuantitas"></td><td><select type="text" style="width: 100%;" class="form-control select2" id="satuan_ukuran" name="satuan_ukuran" data-placeholder="--Pilih Satuan Ukuran--">
<option></option><option>m</option><option>unit</option><option>kg</option></select></td><td> <button class="add_field_button" title="Tambah Field Pesanan"><i class="fas fa-plus"></i></button></td></tr> -->
</tbody>
</table>
Javascript
$(document).ready(function()
var max_fields = 10; //maximum input boxes allowed
var wrapper_pesanan = $(".input_fields_Pesanan"); //Fields wrapper
var add_pesanan = $(".add_field_pesanan"); //Add button ID
var x = 1; //initlal text box count
$(add_pesanan).click(function(e) //on add input button click
e.preventDefault();
if(x < max_fields) //max input box allowed
x++; //text box increment
$(wrapper_pesanan).append('<tr><td><select type="text" style="width: 100%;" class="form-control select2" id="kode_bmn" name="kode_bmn" data-placeholder="--Pilih Kode BMN--"><option></option>@foreach($bmn as $b)<option>$b->kode_bmn-$b->nama_bmn</option>@endforeach</select></td><td><input type="text" class="form-control " id="jenis_barang" name="jenis_barang" ></td><td><input type="number" min="1" class="form-control" id="kuantitas" name="kuantitas"></td><td><select type="text" style="width: 100%;" class="form-control select2" id="satuan_ukuran" name="satuan_ukuran" data-placeholder="--Pilih Satuan Ukuran--"><option></option><option>m</option><option>unit</option><option>kg</option></select></td><td> <a href="#" class="remove_pesanan" title="Hapus"><i class="fas fa-trash-alt"></i></a></td></tr>'); // add input boxes.
);
$(wrapper_pesanan).on("click",".remove_pesanan", function(e)
e.preventDefault(); $(this).parent('td').parent('tr').remove(); x--;
)
);
如何将sql数据库输入javascript 添加新字段时数据库不可读
@foreach($bmn as $b)
<option>$b->kode_bmn-$b->nama_bmn</option>
@endforeach
html中的foreach不能被javascript声明,html中的foreach怎么能被javascript读取
【问题讨论】:
这是一个相当复杂的 UI,我认为 jQuery 还不够。请考虑使用 Laravel 中捆绑的 Vue.js。 【参考方案1】:您不能在 JS 文件中使用刀片模板。
现在你有 2 件事可以做:
-
将 javascript 的 sn-p 从 js 文件移动到“view.blade.php”的底部
您可以在“view.blade.php”中声明包含选项的变量,然后从javascript中获取。
例如:
您的“view.blade.php”将是:
<table >
<tbody class="input_fields_Pesanan">
<tr>
<td style="width: 15%;" align="center"><b>Kode BMN</b></td>
<td style="width: 15%;" align="center"><b>Nama Barang</b></td>
<td style="width: 15%;" align="center"><b>Kuantitas</b></td>
<td style="width: 15%;" align="center"><b>Satuan Ukuran</b></td>
<td style="width: 2%;"></td>
<tr>
<td>
<select type="text" style="width: 100%;" class="form-control select2" id="kode_bmn" name="kode_bmn" data-placeholder="--Pilih Kode BMN--">
<option></option>
@foreach($bmn as $b)
<option>$b->kode_bmn-$b->nama_bmn</option>
@endforeach
</select>
</td>
<td><input type="text" class="form-control " id="jenis_barang" name="jenis_barang" ></td>
<td><input type="number" min="1" class="form-control" id="kuantitas" name="kuantitas"></td>
<td>
<select type="text" style="width: 100%;" class="form-control select2" id="satuan_ukuran" name="satuan_ukuran" data-placeholder="--Pilih Satuan Ukuran--">
<option></option>
<option>m</option>
<option>unit</option>
<option>kg</option>
</select>
</td>
<td> <button class="add_field_pesanan" title="Tambah Field Pesanan"><i class="fas fa-plus"></i></button></td>
</tr>
</tbody>
</table>
<script>
var myOptions = '@foreach($bmn as $b) <option>$b->kode_bmn-$b->nama_bmn</option> @endforeach';
</script>
然后您的 Javascript 文件将是:
$(document).ready(function()
var max_fields = 10; //maximum input boxes allowed
var wrapper_pesanan = $(".input_fields_Pesanan"); //Fields wrapper
var add_pesanan = $(".add_field_pesanan"); //Add button ID
var x = 1; //initlal text box count
$(add_pesanan).click(function(e) //on add input button click
e.preventDefault();
if(x < max_fields) //max input box allowed
x++; //text box increment
$(wrapper_pesanan).append('<tr><td><select type="text" style="width: 100%;" class="form-control select-new-' + x + '" id="kode_bmn" name="kode_bmn" data-placeholder="--Pilih Kode BMN--"><option></option>' + myOptions + '</select></td><td><input type="text" class="form-control " id="jenis_barang" name="jenis_barang" ></td><td><input type="number" min="1" class="form-control" id="kuantitas" name="kuantitas"></td><td><select type="text" style="width: 100%;" class="form-control select-new-' + x + '" id="satuan_ukuran" name="satuan_ukuran" data-placeholder="--Pilih Satuan Ukuran--"><option></option><option>m</option><option>unit</option><option>kg</option></select></td><td> <a href="#" class="remove_pesanan" title="Hapus"><i class="fas fa-trash-alt"></i></a></td></tr>'); // add input boxes.
//instantiate the new select as select2
$('select.select-new-' + x).select2();
);
$(wrapper_pesanan).on("click",".remove_pesanan", function(e)
e.preventDefault(); $(this).parent('td').parent('tr').remove(); x--;
);
);
显然 确保 view.blade.php 中的 sn-p 出现在 包含您的 javascript 之前,否则您会从 javascript 获得未定义的。
【讨论】:
首先我想对我说声谢谢。怎么select2还有搜索功能? 追加后必须重新实例化新的选择,首先从追加字符串中删除“select2”,因为这意味着选择2已经实例化,其次我建议你给例如一个类"select-new-x" 其中 x 是例如您的变量 x,然后在追加后您可以像$('select-new-'+x).select2();
一样重新实例化 select2,如果您想要一个示例,请告诉我 :)
我已经编辑了答案的 javascript 部分,请查看 :) 未测试,请告诉我
不懂...英文
如果所有行在select2中都有搜索功能怎么办?以上是关于在laravel中使用javascript进行foreach循环的主要内容,如果未能解决你的问题,请参考以下文章
为啥将数据从 php 发送到 javascript (Laravel) 时进行 json 编码?
如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称